我很累但是在退出之前只是停留在下面的代码片段中的近3行中,在我的tictactoe面板上做了一个“刷新”按钮,希望能够摆脱它但是期待错误,因为它混合了布局管理器在一个容器上。
但它奏效了。
ButtonPanel.setLayout(new GridLayout(3, 3));
guiFrame.add(ButtonPanel);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
button[i][j] = addButton(ButtonPanel, i, j);
}
}
JButton refreshbutton = new JButton("Refresh");
guiFrame.add(refreshbutton, BorderLayout.SOUTH); // ... border layout worked. Hm.
refreshbutton.addActionListener(this);
guiFrame.setVisible(true); }
我应该感到惊讶吗? (请记住我的新手。)
( BOY ,我是否在编写这个愚蠢的游戏程序时学习/偶然发现了一些文件! - 例如,使用setActionCommand
在内部“标记”每个按钮[如11,12,13,21,... 33]所以ONE actionPerformed
方法可以使用getActionCommand
正确地标记[使用X或O]按钮被任何人转动的按钮。)
答案 0 :(得分:2)
guiFrame.add(refreshbutton,BorderLayout.SOUTH); // ...边框布局有效HM。
仅仅因为你使用了BorderLayout.SOUTH并没有使一个面板成为BorderLayout。您的代码有效,因为JFrame(JDialog)的内容窗格的默认布局管理器是BorderLayout。所以你只是利用了默认布局。
因为它将布局管理器混合在一个容器上。
是的,这是一种常见做法。实际上,如果不在添加到GUI的不同面板上使用不同的布局管理器,则几乎不可能创建相当复杂的GUI。