【发布时间】:2014-12-23 11:31:42
【问题描述】:
public void renderPanels(){
for(int i = 1; i<4; i++){
for(int j = 1; j<4; j++){
panels[i][j] = new JPanel();
frame.add(panels[i][j]);
buttons[i][j] = new JButton();
panels[i][j].add(buttons[i][j]);
panels[i][j].setBounds(i*50, j*50, 50, 50);
panels[i][j].setLayout(null);
buttons[i][j].setBounds(0, 0, 50, 50);
System.out.println(panels[i][j].getBounds());
}
}
}
好的,这是我的代码,用于渲染一个 3x3 的面板网格,其中包含按钮。 frame 变量包含一个JFrame 对象,但遗憾的是我的输出如下图所示:
最后一次迭代中的帧似乎被渲染在一个位置,好像 i 和 j 比初始值低 1 个单位。有什么想法吗?
【问题讨论】:
-
请使用布局管理器而不是调用
setBounds。 -
CardLayout 呢?
-
我的问题是为什么这不起作用?
-
1) 为了尽快获得更好的帮助,请发布MCVE(最小完整可验证示例)或SSCCE(简短、自包含、正确示例)。 2) Java GUI 必须在不同的操作系统、屏幕尺寸、屏幕分辨率等上工作。因此,它们不利于像素完美布局。而是使用布局管理器,或combinations of them 以及white space 的布局填充和边框。 3) 很可能空布局是所见问题的根源。
-
出现的那个 GUI 的部分,向我建议
GridLayout..
标签: java swing loops jpanel rendering