我很累,但是在退出之前,只停留在下面的代码片段的最后三行中,以便在我的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); }
我应该感到惊讶吗? (请记住我的新手。)
(男孩,在编写这个愚蠢的游戏程序时,我是否学过/偶然发现了很多东西!!!例如,使用
setActionCommand
在内部“标记”每个按钮[为11,12,13,21,... 33],因此ONE actionPerformed
方法可以使用getActionCommand
正确标记[X或O],无论旋转者按下了什么按钮。) 最佳答案
guiFrame.add(refreshbutton,BorderLayout.SOUTH); // ...边框布局有效。嗯
仅仅因为您使用BorderLayout.SOUTH不能使面板成为BorderLayout。您的代码有效,因为JFrame(JDialog)的内容窗格的默认布局管理器是BorderLayout。因此,您只是利用默认布局。
因为它在单个容器上混合了布局管理器。
是的,这是一种常见的做法。实际上,如果您没有在添加到GUI的不同面板上使用不同的布局管理器,则几乎不可能创建一个相当复杂的GUI。
关于java - 混合gridlayout和borderlayout,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19016809/