所以我试图在窗口上显示位图图块的网格。我有一个 for 循环,它正在填充 JLabel 数组并使用 .setLocation() 来定义它们的位置。问题是,当显示框架时,他们似乎完全忽略了我为他们设置的位置。
这是我到目前为止的代码。
public static void main(String[] args) throws IOException {
JFrame mainFrame = new JFrame("game.demo");
mainFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
mainFrame.setSize(512, 512);
JPanel mainPanel = new JPanel();
BufferedImage desTile16Image = ImageIO.read(new File("assets//desert_tile_16x.bmp"));
ImageIcon desTile16Icon = new ImageIcon(desTile16Image);
JLabel[][] map = new JLabel[32][32];
for (int x = 0; x < 32; x++) {
System.out.print(x + "n");
map[x][0] = new JLabel();
map[x][0].setIcon(desTile16Icon);
map[x][0].setLocation(x * 16, 0);
mainPanel.add(map[x][0]);
}
//mainFrame.pack();
mainFrame.add(mainPanel);
mainFrame.setContentPane(mainPanel);
mainFrame.setVisible(true);
}
任何帮助将不胜感激,提前感谢。
考虑类似...
JPanel mainPanel = new JPanel(new GridLayout(32, 32));
那么你就不需要map[x][0].setLocation(x * 16, 0);
查看在容器中布局组件以及如何使用 GridLayout 更多详细信息