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);
Run Code Online (Sandbox Code Playgroud)
这就是我所拥有的(N = 4):
这是(大约)我正在寻找的(N = 4):
我需要/想要的只是两个(或更多)JPanels,大致如上所述,我尝试过的所有布局管理器都不适合GridLayout布局JFrame.
欢迎提出有关更好解决方案的任何建议.
谢谢!
假设您在NxN网格中有一个JButtons的GridLayout,代码如下:
JPanel bPanel = new JPanel();
bPanel.setLayout(new GridLayout(N, N, 10, 10));
for (int row = 0; row < N; row++)
{
for (int col = 0; col < N; col++)
{
JButton b = new JButton("(" + row + ", " + col + ")");
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
}
});
bPanel.add(b);
}
}
Run Code Online (Sandbox Code Playgroud)
如何在网格中单独访问每个按钮以通过setText()更改按钮的名称?这需要在实际按下相关按钮之外完成.
因为每个按钮在本地实例化为"b",所以当前不可能为每个按钮提供全局可访问的名称.如何独立访问每个按钮?像JButton [] []这样的数组是否可以保存对所有按钮的引用?如何在上面的代码中设置?
任何输入都表示赞赏.
谢谢.