有没有办法在Java中使用多个布局管理器?目前我正在使用gridLayout来实现国际象棋棋盘,但是我想在其下放置其他一些东西,但不是在gridLayout中。也许是FlowLayout或其他布局。我该怎么做呢? 谢谢!
有没有办法在Java中使用多个布局管理器?目前我正在使用gridLayout来实现国际象棋棋盘,但是我想在其下放置其他一些东西,但不是在gridLayout中。也许是FlowLayout或其他布局。我该怎么做呢? 谢谢!
是的,你只需要规划好整体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);
有没有办法在Java中使用多个布局管理器。
当然可以。事实上,使用多个布局管理器是很常见的。
我该如何做到这一点?
任何Container
子类都可以有一个LayoutManager
并包含子元素。而且,每个子元素本身也可以是一个带有子元素的Container
。在顶层框架下最常用的容器是JPanel
。
对于您的示例,您应该在框架中使用BorderLayout
,将包含网格的JPanel
放置在其CENTER位置(因为这是在其他位置给出首选大小后获得所有可用剩余空间的位置),并将另一个包含“其他内容”的JPanel
放置在SOUTH位置。
更多详细信息请参见Swing tutorial on layout managers。