Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JLayeredPane不显示我的自定义JPanel_Java_Swing - Fatal编程技术网

Java JLayeredPane不显示我的自定义JPanel

Java JLayeredPane不显示我的自定义JPanel,java,swing,Java,Swing,我无法使用JLayeredPanel显示自定义面板。我目前正在尝试在第一层上创建一个黑色矩形,在第二层上,我有一个自定义的JPanel,它是图像的幻灯片。幻灯片根本不会显示,它只在我将其添加到框架中时才起作用。有什么想法吗 代码: 导入java.awt.Color; 导入java.awt.Container; 导入java.awt.Dimension; 导入java.awt.Image; 导入java.awt.Toolkit; 导入java.util.ArrayList; 导入javax.swi

我无法使用JLayeredPanel显示自定义面板。我目前正在尝试在第一层上创建一个黑色矩形,在第二层上,我有一个自定义的JPanel,它是图像的幻灯片。幻灯片根本不会显示,它只在我将其添加到框架中时才起作用。有什么想法吗

代码:

导入java.awt.Color;
导入java.awt.Container;
导入java.awt.Dimension;
导入java.awt.Image;
导入java.awt.Toolkit;
导入java.util.ArrayList;
导入javax.swing.ImageIcon;
导入javax.swing.JFrame;
导入javax.swing.JLayeredPane;
导入javax.swing.JPanel;
公共类GUI扩展JFrame{
私家货柜窗格玻璃;
私人JPanel emptySlideShow;
私人JLayeredPane layeredPane;
公共图形用户界面(){
此.setVisible(true);
维度screenSize=Toolkit.getDefaultToolkit().getScreenSize();
这个.setBounds(0,0,screenSize.width,screenSize.height);
////设置内容窗格
//pane=this.getContentPane();//获取内容窗格以放置组件
//pane.setLayout(null);//使用绝对定位(使用插图)
//pane.setBackground(新颜色(236236236236));//给背景上色
//
////设置主菜单栏
this.emptySlideShow=new JPanel();
this.emptySlideShow.setBounds(0,0,(int)Toolkit.getDefaultToolkit().getScreenSize().getWidth(),250);
这个.emptySlideShow.setBackground(新颜色(0,0,0));
layeredPane=新的JLayeredPane();
layeredPane.setLayout(空);
layeredPane.add(this.emptySlideShow,新整数(0));
ArrayList幻灯片=新建ArrayList();
Image image1=新图像图标(“pictures/slide1.png”).getImage();
幻灯片。添加(图1);
Image image2=新的图像图标(“pictures/slide2.png”).getImage();
幻灯片。添加(图2);
ArrayList transitions=新的ArrayList();
过渡。添加(“PanLR”);
过渡。添加(“淡出”);
添加(新幻灯片放映(幻灯片、过渡));
layeredPane.add(新的幻灯片放映(幻灯片、过渡)、新的整数(1));
添加(分层窗格);
}
}

这是一个猜测,因为我们没有所有相关的代码——但在将组件添加到JLayeredPane时,您需要指定组件的大小和位置,因此在添加之前,您可能没有设置幻灯片的大小(默认情况下,其位置为0,0)


但问题是:为什么要两次将幻灯片JPanel添加到GUI中?一次到JLayeredPane,另一次到JFrame本身?

简单。调用后,您正在将组件(包括JLayeredPane)添加到框架中

this.setVisible(true);
将这一行移到构造函数的末尾,您应该会没事,或者如果您真的想将这一行保持在顶部,您应该调用revalidate()来更新JFrame和组件

this.setVisible(true);