混合gridlayout和borderlayout

时间:2013-09-25 23:21:32

标签: java swing layout-manager grid-layout border-layout

我很累但是在退出之前只是停留在下面的代码片段中的近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]按钮被任何人转动的按钮。)

1 个答案:

答案 0 :(得分:2)

  

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

仅仅因为你使用了BorderLayout.SOUTH并没有使一个面板成为BorderLayout。您的代码有效,因为JFrame(JDialog)的内容窗格的默认布局管理器是BorderLayout。所以你只是利用了默认布局。

  

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

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