我无法使用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/

10-13 04:27