Java Swing 布局困惑/困难

标签 java swing layout border-layout nestedlayout

我仍在尝试弄清楚 JavaSwing 中的 BorderLayout,这真的很令人沮丧。

我希望能够将一个 Pane 拆分为 3 个包含的子面板,但我不完全确定如何包含它。

这是我的游戏类,其中包含面板 ControlPanel、StatePanel 和 Board(实际上只是 JPanel 的扩展)。我想将面板分为三个部分,如下所示: simple picture

这是迄今为止我的代码:

public class Game extends JPanel {
    private int panespace=2;
    private JPanel ControlPanel;
    private JPanel StatePanel;
    private Board board;
    public Game()
    {
         setLayout(new BorderLayout(panespace, panespace));
         ControlPanel=new JPanel();
         ControlPanel.setLayout(new BorderLayout(panespace, panespace));
         ControlPanel.setBorder(new LineBorder(Color.red, 10));
         ControlPanel.setSize(100,100);
         super.add(ControlPanel, BorderLayout.EAST);
         StatePanel=new JPanel();
         StatePanel.setLayout(new BorderLayout(panespace, panespace));
         StatePanel.setBorder(new LineBorder(Color.green, 10));
         StatePanel.setSize(200, 200);
         super.add(StatePanel, BorderLayout.EAST);
         board = new Board();
         board.setLayout(new BorderLayout(panespace, panespace));
         board.setBorder(new LineBorder(Color.yellow, 10));
         board.setSize(300, 300);
         super.add(board, BorderLayout.NORTH);
         setVisible(true);
    }
}

最好使用 BorderLayout,但我似乎做得不正确。我尝试阅读 Oracle 提供的 Material ,但它们并没有特别有帮助。此时,我想要对值进行硬编码,但我知道我应该能够将其拆分,让每个面板尽可能多地占据更大的游戏面板。

最佳答案

正如 mkhelif 所说,同一个槽中不能有两个东西。您想要的是 board 进入 CENTER,然后在 SOUTH 中创建另一个包含 ControlPanel 的 JPanel StatePanelFlowLayout 中。

关于Java Swing 布局困惑/困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12853977/

相关文章:

java - 如何使用 Java 检索 Mysql 中表的两个字段?

java - Datastax DSE Cassandra、Spark、Shark、独立程序

java - 如何获取 JComponent 的顶级容器?

javascript - 获取屏幕、当前网页和浏览器窗口的大小

Android ConstraintLayout跳到屏幕右侧

Java 对大型抽象列表的二分查找

JavaFX TableView 编辑而不是编辑

java - 如何使用 swing 使用 tab 键将一个字段移动到另一个字段?

Java Swing - JScrollPane 中 Jtable 中的 ImageIcon

安卓数据绑定(bind) : Layout to the view