我无法使用JLayeredPanel显示自定义面板。我目前正在尝试在第一层上创建一个黑色矩形,在第二层上,我有一个自定义的JPanel,它是图像的幻灯片显示。幻灯片将完全不显示,仅当我将其添加到框架时才起作用。有什么想法吗?
码:
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Toolkit;
import java.util.ArrayList;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
public class GUI extends JFrame {
private Container pane;
private JPanel emptySlideShow;
private JLayeredPane layeredPane;
public GUI(){
this.setVisible(true);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
this.setBounds(0,0,screenSize.width, screenSize.height);
// //Set up the content pane
// pane = this.getContentPane(); //get the content pane to place components
// pane.setLayout(null); //use absolute positioning (using Insets)
// pane.setBackground(new Color(236, 236, 236)); //color the background
//
// //Set up the main menu bar
this.emptySlideShow = new JPanel();
this.emptySlideShow.setBounds(0,0,(int)Toolkit.getDefaultToolkit().getScreenSize().getWidth(),250);
this.emptySlideShow.setBackground(new Color(0,0,0));
layeredPane = new JLayeredPane();
layeredPane.setLayout(null);
layeredPane.add(this.emptySlideShow,new Integer(0));
ArrayList<Image> slides = new ArrayList<Image>();
Image image1 = new ImageIcon("pictures/slide1.png").getImage();
slides.add(image1);
Image image2 = new ImageIcon("pictures/slide2.png").getImage();
slides.add(image2);
ArrayList<String> transitions = new ArrayList<String>();
transitions.add("PanLR");
transitions.add("FadeOut");
this.add(new SlideShow(slides,transitions));
layeredPane.add(new SlideShow(slides,transitions),new Integer(1));
this.add(layeredPane);
}
}
最佳答案
一个猜测,因为我们没有所有相关的代码-但是在将组件添加到JLayeredPane时需要指定组件的大小和位置,因此也许您在添加它之前未设置SlideShow的大小(它的位置会默认为0、0)。
但是,问题是:为什么要尝试两次将SlideShow JPanel添加到GUI?一次到JLayeredPane,另一个到JFrame本身?
关于java - JLayeredPane没有显示我的自定义JPanel,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32302764/