【问题标题】:How to put two java swing JPanels next to each other and have a table in it?如何将两个 java swing JPanel 并排放置并在其中放置一张桌子?
【发布时间】:2013-03-28 19:51:30
【问题描述】:

我正在尝试构建自己的“战舰”游戏,但在挥杆方面遇到了问题。 我现在阅读了关于 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 只是将按钮排成一行并超出屏幕。

【问题讨论】:

  • 您当前的代码有什么问题?为什么要固定两个面板的大小?
  • 如需尽快获得更好的帮助,请发帖SSCCE

标签: java swing layout jpanel layout-manager


【解决方案1】:

在使用任何布局时不要固定面板的大小。仅当您使用空布局时才有效

您可以通过GridBagLayout 实现您的目标。在添加按钮时正确指定gridxgridy,它会添加像表格这样的按钮

【讨论】:

    【解决方案2】:

    继续嵌套布局。

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

    【讨论】:

      【解决方案3】:

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2013-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-13
        • 1970-01-01
        相关资源
        最近更新 更多