2010-03-31 82 views
5

有没有办法在Java中使用多于1个布局管理器。现在,我正在使用一个gridLayout来实现一个棋盘,但在它下面我想放一些其他的东西,但不是在一个gridLayout。也许是一个FlowLayout或其他布局。我会如何去做这件事? 谢谢!Java中的多个布局管理器

回答

6

有没有办法在Java中使用多于1个布局的 manager。

绝对。实际上,使用多个布局管理器是常态。

我该如何去做这件事?

任何Container子类可以有一个LayoutManager并包含子元素。并且这些子元素中的每一个本身都可以是带孩子的Container。顶级框架下面最常用的容器是JPanel

对于你的榜样,你应该使用BorderLayout为框架,把JPanel在其中心位置的网格(因为这是一个得到所有可用的剩余空间时,其他位置都被赋予了他们的首选尺寸)另一个JPanel与南方的“其他东西”位置。

更多详细信息请参见Swing tutorial on layout managers

7

是的,所有你需要的是计划你在所有的UI布局;

例如,你需要把一些你的棋盘下(即窗口,主面板等),我通常会用一个BorderLayout的,在去基本的水平。

因此,假设我有一个名为masterPanel的JPanel,它包含我的国际象棋应用程序的所有组件。因此,代码将如下所示:

JPanel masterPanel = new JPanel(new BorderLayout()); 
JPanel chessBoardPanel = createChessboardPanel(); //assuming this method will return a 
//JPanel with chess board using GridLayout 
JPanel infoPanel = new JPanel(); //this is the panel that would contain info elements, that //may go below my chess board. 
//Now add everything to master panel. 
masterPanel.add(chessBoardPanel, BorderLayout.CENTER); 
masterPanel.add(infoPanel, BorderLayout.PAGE_END); 
//add masterPanel to your window (if required) 
this.getContentPane().add(masterPanel);