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

10-12 00:12