使用.set Location()似乎不适用于JLabel

时间:2014-11-21 06:23:22

标签: java swing jframe

所以我试图在窗口上显示位图图块的网格。 我有一个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);
}

任何帮助都将非常感谢,提前谢谢。

1 个答案:

答案 0 :(得分:1)

考虑类似......

JPanel mainPanel = new JPanel(new GridLayout(32, 32));

然后你不需要map[x][0].setLocation(x * 16, 0);

查看Laying Out Components Within a ContainerHow to Use GridLayout更多详情