Java中的多个布局管理器

ran*_*nzy 8 java layout user-interface swing

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

rin*_*rer 9

是的,您只需要计划您的所有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);
Run Code Online (Sandbox Code Playgroud)


Mic*_*rdt 8

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

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

我该怎么做呢?

所有Container子类可以有一个LayoutManager与包含子元素.而这些儿童元素中的每一个本身都可以Container与孩子在一起.顶层框架下方最常用的容器是JPanel.

对于您的示例,您可能应该使用a BorderLayout作为框架,将JPanel网格放在其CENTER位置(因为那是当其他位置被赋予其首选大小时获得所有可用剩余空间的那个)而另一个JPanel使用"其他"东西"在南方的位置.

更多细节可以在布局管理器Swing教程中找到.