0

我很累,但在退出之前,我只是停留在下面代码片段中的最后 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);   }

我应该感到惊讶吗?(记住我的新手。)

男孩,我在编写这个愚蠢的游戏程序时是否学到/偶然发现了一堆东西!!!--例如,使用setActionCommand内部“标记”每个按钮 [as 11,12,13,21,...33] 所以ONEactionPerformed方法可以getActionCommand用来正确标记 [用 X 或 O] 轮到谁按下的任何按钮。)

4

1 回答 1

2

guiFrame.add(refreshbutton, BorderLayout.SOUTH); // ... 边框布局有效。嗯。

仅仅因为您使用了 BorderLayout.SOUTH 不会使面板成为 BorderLayout。您的代码有效,因为 JFrame (JDialog) 的内容窗格的默认布局管理器是 BorderLayout。因此,您只是在利用默认布局。

因为它将布局管理器混合在一个容器上。

是的,这是一种常见的做法。事实上,如果您不在添加到 GUI 的不同面板上使用不同的布局管理器,几乎不可能创建一个相当复杂的 GUI。

于 2013-09-25T23:53:56.440 回答