Java 无法在JPanel中查看JLayeredPane中的内容

Java 无法在JPanel中查看JLayeredPane中的内容,java,swing,jpanel,jlabel,jlayeredpane,Java,Swing,Jpanel,Jlabel,Jlayeredpane,我正在尝试创建一个board类,该类扩展了双陆棋游戏的JPanel,并创建了一个JLayeredPane来为我的跳棋创建一个拖动区域,但我甚至无法在面板上打印一个简单的矩形。它不打印图像,但不打印JLabel。 这是我的JPanel课程 public class BoardPanel extends JPanel{ private JLayeredPane lp; private BufferedImage imageBoard; private final int WIDTH = 1000

我正在尝试创建一个board类,该类扩展了双陆棋游戏的JPanel,并创建了一个JLayeredPane来为我的跳棋创建一个拖动区域,但我甚至无法在面板上打印一个简单的矩形。它不打印图像,但不打印JLabel。 这是我的JPanel课程

public class BoardPanel extends JPanel{

private JLayeredPane lp;

private BufferedImage imageBoard;
private final int WIDTH = 1000;
private final int HEIGHT = 800;

private ArrayList<Slot> slotSet1;
private ArrayList<Slot> slotSet2;
private ArrayList<Slot> slotSet3;
private ArrayList<Slot> slotSet4;
private CheckerSet ch1;
public  Checker chc;

public BoardPanel(){

    initComponents();

}

private void initComponents(){

    lp = new JLayeredPane();

    setPreferredSize(new java.awt.Dimension(1500, 1000));

    //lp.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
    lp.setBorder(javax.swing.BorderFactory.createTitledBorder("asdadsaddadsadasdadsa"));
    lp.setMaximumSize(new java.awt.Dimension(1124, 904));
    lp.setMinimumSize(new java.awt.Dimension(1124, 904));


    try {
       imageBoard = ImageIO.read(getClass().getResource("/images/board.jpg"));
   } catch (IOException e) {
       System.out.println("file error");
   }

        JLabel label = new JLabel();
        label.setVerticalAlignment(JLabel.TOP);
        label.setHorizontalAlignment(JLabel.CENTER);
        label.setOpaque(true);
        label.setBackground(Color.BLACK);
        label.setForeground(Color.black);
        label.setBorder(BorderFactory.createLineBorder(Color.black));
        label.setBounds(0, 0, 50, 50);

    lp.add(label,JLayeredPane.DEFAULT_LAYER);


}
public void paintComponent(Graphics g){

    //g.drawImage(imageBoard,0,0,null);

}

我如何解决它?谢谢大家

您必须向JLayeredPane添加布局,例如GridLayout。试试这个:

GridLayout gl = new GridLayout(20, 21);
lp.setLayout(gl);
初始化
lp
后。然后,您可以将需要的所有组件添加到GridLayout中,例如:

gl.add(lp)

布局将管理物品的显示方式;在本例中,它将从GridLayout填充网格,首先是第一行(其中有20行),然后是第二行,依此类推(我认为您实际上不需要20行,就像我的示例代码中那样)

您的
JLayeredPane
从未添加到任何内容。只添加了add(lp)行,我得到了一些东西。我想我需要为lp设置一个布局,然后就可以了。谢谢。我试过了你的答案,但还是一无所获。编辑:刚刚在initComponents()方法中添加了add(lp),我得到了一些结果,感谢我忘记在我的答案中在GridLayout中添加显式的“lp”,我将据此编辑我的回答,我很高兴它有帮助:)你介意将此标记为正确,以便其他用户可以看到帮助你的内容吗?
gl.add(lp)