Java中的多个布局管理器

8

有没有办法在Java中使用多个布局管理器?目前我正在使用gridLayout来实现国际象棋棋盘,但是我想在其下放置其他一些东西,但不是在gridLayout中。也许是FlowLayout或其他布局。我该怎么做呢? 谢谢!

2个回答

11

是的,你只需要规划好整体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);

8

有没有办法在Java中使用多个布局管理器。

当然可以。事实上,使用多个布局管理器是很常见的。

我该如何做到这一点?

任何Container子类都可以有一个LayoutManager并包含子元素。而且,每个子元素本身也可以是一个带有子元素的Container。在顶层框架下最常用的容器是JPanel

对于您的示例,您应该在框架中使用BorderLayout,将包含网格的JPanel放置在其CENTER位置(因为这是在其他位置给出首选大小后获得所有可用剩余空间的位置),并将另一个包含“其他内容”的JPanel放置在SOUTH位置。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接