Java 无法在JPanel中查看JLayeredPane中的内容
我正在尝试创建一个board类,该类扩展了双陆棋游戏的JPanel,并创建了一个JLayeredPane来为我的跳棋创建一个拖动区域,但我甚至无法在面板上打印一个简单的矩形。它不打印图像,但不打印JLabel。 这是我的JPanel课程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
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)