【发布时间】:2011-02-03 00:34:56
【问题描述】:
有没有办法在 Java 中使用超过 1 个布局管理器。现在我正在使用 gridLayout 来实现棋盘,但在它下面我想放一些其他的东西,但不是在 gridLayout 中。也许是 FlowLayout 或其他一些布局。我该怎么做呢? 谢谢!
【问题讨论】:
标签: java user-interface swing layout
有没有办法在 Java 中使用超过 1 个布局管理器。现在我正在使用 gridLayout 来实现棋盘,但在它下面我想放一些其他的东西,但不是在 gridLayout 中。也许是 FlowLayout 或其他一些布局。我该怎么做呢? 谢谢!
【问题讨论】:
标签: java user-interface swing layout
是的,您只需要规划您的所有 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);
【讨论】:
有没有办法使用超过 1 个布局 Java 中的管理器。
当然。事实上,使用多个布局管理器是常态。
我该怎么做呢?
任何Container 子类都可以有一个LayoutManager 并包含子元素。这些子元素中的每一个本身都可以是带有子元素的Container。顶层框架下最常用的容器是JPanel。
对于您的示例,您可能应该将BorderLayout 用于框架,将JPanel 与网格放在其中心位置(因为当其他位置已被赋予它们的位置时,它会获得所有可用的剩余空间首选尺寸)和另一个JPanel,“其他东西”在南位置。
【讨论】: