我在一个窗口中添加了两个10x10的网格,但我无法使它们以较小的尺寸显示。它们只是填满了整个Windows。我该如何把它们整齐地放在中间一个较小的尺寸,以便有一些标签和按钮的空间?我把代码贴在下面以供参考。
public static void main(String[] args) {
window = new JFrame();
window.setTitle("Battleship.exe");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setPreferredSize(new Dimension(600, 600));
P1_container = new JPanel(new GridLayout(10,10));
P1_container.setBorder(BorderFactory.createLineBorder(Color.black, 5));
compContainer = new JPanel(new GridLayout(10,10));
compContainer.setBorder(BorderFactory.createLineBorder(Color.black, 5));
grid = new JPanel[10][10];
for (int i =0; i< 10; i++) {
for (int j =0; j< 10; j++) {
grid[i][j] = new JPanel();
grid[i][j].setBackground(Color.white);
grid[i][j].setBorder(BorderFactory.createLineBorder(Color.blue, 2));
grid[i][j].setPreferredSize(new Dimension(25,25));
P1_container.add(grid[i][j]);
}
}
enemyGrid = new JPanel[10][10];
for (int i =0; i< 10; i++) {
for (int j =0; j< 10; j++) {
enemyGrid[i][j] = new JPanel();
enemyGrid[i][j].setBackground(Color.white);
enemyGrid[i][j].setBorder(BorderFactory.createLineBorder(Color.red, 2));
enemyGrid[i][j].setPreferredSize(new Dimension(25, 25));
compContainer.add(enemyGrid[i][j]);
}
}
GridLayout layout = new GridLayout(1, 2);
layout.setHgap(150);
mainPanel = new JPanel(layout);
mainPanel.add(P1_container);
mainPanel.add(compContainer);
window.add(mainPanel);
window.pack();
window.setVisible(true);
}
2条答案
按热度按时间e0bqpujr1#
你的代码有24个编译错误。一旦我修复了编译错误,我修改了一行并注解掉了一行以获得这个gui。
下面是完整的可运行代码。
ryevplcw2#
使用swing布局管理器的关键是嵌套容器。
将mainpanel嵌套到另一个jpanel中,该jpanel使用一个布局来帮助您实现目标,例如将mainpanel放置在borderlayout.center位置的borderlayout。然后在其他borderlayout位置将其他gui组件添加到这个相同的外部jpanel中。
如果不希望主面板展开,请使用其他不展开的外部布局,如flowlayout。