Java / Eclipse IDE在这里 .
我有一个JFrame设置为大小为NxN的GridLayout . 用户将N作为程序开头的命令行给出 . NxN模式的JButtons被添加到JPanels的窗口中,由GridLayout设置在位置(我认为) .
每个JButton都需要自己的JPanel来使用GridLayout吗?我的印象是你可以为所有按钮设置一个JPanel,并将JPanel设置为JButtons的GridLayout . 我想在按钮数组的左侧添加另一个JPanel,以显示按钮单击(JLabel)和同一左侧JPanel内的重置按钮 .
这是(一点点)我的代码,其中N由用户给出,system是我的后台进程类,ButtonEvent是ActionListener / actionPerformed的类:
JFrame window = new JFrame("");
GridLayout layout = new GridLayout(N,N);
window.setLayout(layout);
for (int row = 0; row < N; row++){
for (int col = 0; col < N; col++){
JPanel panel = new JPanel();
JButton b = new JButton ("("+row+","+col+")");
window.add(b).setLocation(row, col);
panel.add(b);
b.addActionListener(new ButtonEvent(b, system, row, col));
window.add(panel);
}
}
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.pack();
window.setVisible(true);
这就是我所拥有的(N = 4):
这是(大约)我正在寻找的(N = 4):
我需要/想要的只是两个(或更多)JPanels,大致如上所述,我尝试过的所有布局管理器都不能与GridLayout布局JFrame一起使用 .
欢迎提出有关更好解决方案的任何建议 .
谢谢!
3 回答
在这里尝试这个代码示例:
OUTPUT :
在JFrame上添加和setLayout不会执行它们看起来的操作 . JFrame是顶级容器,最好在JPanels中组织您的内容 .
您应该以这种形式组织您的面板:
然后将JPanel添加到JFrame . 还将面板放在单独的类中:
给每个按钮(或按钮组)自己的面板的一个好处是嵌套面板可以具有不同的布局 . 在此example中,每个嵌套的
ButtonPanel
都具有默认的FlowLayout
,因此在调整封闭容器大小时,按钮的大小保持不变 .