【问题标题】:Multiple Layout Managers in JavaJava 中的多个布局管理器
【发布时间】:2011-02-03 00:34:56
【问题描述】:

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

【问题讨论】:

    标签: java user-interface swing layout


    【解决方案1】:

    是的,您只需要规划您的所有 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);
    

    【讨论】:

      【解决方案2】:

      有没有办法使用超过 1 个布局 Java 中的管理器。

      当然。事实上,使用多个布局管理器是常态。

      我该怎么做呢?

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

      对于您的示例,您可能应该将BorderLayout 用于框架,将JPanel 与网格放在其中心位置(因为当其他位置已被赋予它们的位置时,它会获得所有可用的剩余空间首选尺寸)和另一个JPanel,“其他东西”在南位置。

      更多详情请见Swing tutorial on layout managers

      【讨论】:

        猜你喜欢
        • 2017-11-02
        • 1970-01-01
        • 2013-10-08
        • 2016-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-08
        相关资源
        最近更新 更多