我正在尝试使用以下代码在JLayeredPane中绘制图片,但我看到的只是最后一个单元格中的一张小图片,可能是5x5px。我不知道为什么。有什么建议吗?谢谢。
try {
imgL0 = ImageIO.read(new File("resources/L0.png"));
} catch (Exception e) {
System.out.println("FileNotFoundException");
System.exit(1);
}
ImageIcon imageIcon = new ImageIcon(imgL0);
JLabel img = new JLabel();
img.setIcon(imageIcon);
img.setBounds(0, 0, boardSize, boardSize);
field = new JLayeredPane[boardSize][boardSize];
for (int i = 0; i < boardSize; i++) {
for (int j = 0; j < boardSize; j++) {
field[i][j] = new JLayeredPane();
field[i][j].setSize(new Dimension(80, 80));
field[i][j].setBorder(BorderFactory.createLineBorder(Color.black));
field[i][j].add(img);
field[i][j].repaint();
field[i][j].revalidate();
boardPanel.add(field[i][j], JLayeredPane.DEFAULT_LAYER);
}
}
答案 0 :(得分:1)
您似乎尝试多次将JLabel添加到不同的容器中,这在Swing GUI中是不允许的,因为使用Swing,组件只能添加一次,如果它被添加到多个容器,它只显示在最后一个补充。而是考虑创建一个包含JLabel网格的JPanel,并多次添加一个ImageIcon(这是ImageIcons允许的)到网格所持有的JLabel。
您的代码还有其他好奇心,包括尝试添加多个JLayeredPanes,这是一个非常不寻常的要求。你想在这里建造什么?我必须相信有更好的方法来做到这一点,无论它是什么。