如何将两个java swing JPanels放在一起并且有一个表格?

时间:2013-04-06 11:12:12

标签: java swing layout jpanel layout-manager

我正在尝试建立自己的“战舰”游戏并且遇到挥杆问题。 我现在在LayoutManagers上阅读有关oracle教程的无尽文档,但是根据我的理解,它们中的任何一个都没有。他们只添加了几个按钮,但从不添加两个单独的面板。

        JPanel Background = new JPanel();
    Background.setLayout(new BoxLayout(Background, BoxLayout.X_AXIS));
    panelPlayer = new JPanel();
    panelPlayer.setBorder(BorderFactory.createLineBorder(Color.black));
    panelPlayer.setSize(700, 600);
    // PC Field
    panelPc = new JPanel();
    panelPc.setBorder(BorderFactory.createLineBorder(Color.black));
    panelPc.setSize(700, 600);
    //adding to frame
    getContentPane().add(Background);
    Background.add(panelPlayer);
    Background.add(panelPc);

之后我有一个循环,它在JButton []中为每个面板添加一次16x16按钮。

如何让两个面板显示表格布局? 我以前使用GridLayout,网格工作,但它总是占用框架的整个空间,而不是容器或面板或其他。面板重叠然后。 GridBagLayout只是将按钮放在一行并超出屏幕。

3 个答案:

答案 0 :(得分:0)

使用任何布局时,请勿修复面板的大小。它仅在您使用空布局

时有效

您可以使用GridBagLayout实现目标。添加按钮正确指定gridxgridy时,会添加表格

等按钮

答案 1 :(得分:0)

继续嵌套布局。

在你的情况下做一个双方的大 - 然后在每一侧放置另一个带有网格的面板。

答案 2 :(得分:0)

您可以通过嵌套面板来解决此问题。每个面板都有自己的布局管理器,因此需要将UI分解为多个部分并为每个部分选择布局管理器。

如果您需要并排放置两个面板,则包含它们的面板应具有水平方向的FlowLayout管理器。使用FlowLayout创建一个面板并将面板添加到其中。

如果每个并排面板都需要按钮网格,则将面板布局设置为GridLayout并将按钮放在面板中。这符合我对战舰的记忆;在网格布局中,无论窗口的大小如何调整,所有网格元素都保持相同的大小。

这应该让你开始。如果,正如我所料,你会想要另一个面板上有一些游戏控件,请查看BorderLayout;它在矩形的每个边上有一个部分,在中间有另一个部分。使用BorderLayout将包含两个网格的面板放在面板的中心,然后您的游戏控件可以放在面板的北面,南面,东面或西边。

祝你好运。如果您有特定问题,请告诉我们(在另一个问题中)。