我正在尝试建立自己的“战舰”游戏并且遇到挥杆问题。 我现在在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只是将按钮放在一行并超出屏幕。
答案 0 :(得分:0)
使用任何布局时,请勿修复面板的大小。它仅在您使用空布局
时有效您可以使用GridBagLayout实现目标。添加按钮正确指定gridx
,gridy
时,会添加表格
答案 1 :(得分:0)
继续嵌套布局。
在你的情况下做一个双方的大 - 然后在每一侧放置另一个带有网格的面板。
答案 2 :(得分:0)
您可以通过嵌套面板来解决此问题。每个面板都有自己的布局管理器,因此需要将UI分解为多个部分并为每个部分选择布局管理器。
如果您需要并排放置两个面板,则包含它们的面板应具有水平方向的FlowLayout管理器。使用FlowLayout创建一个面板并将面板添加到其中。
如果每个并排面板都需要按钮网格,则将面板布局设置为GridLayout并将按钮放在面板中。这符合我对战舰的记忆;在网格布局中,无论窗口的大小如何调整,所有网格元素都保持相同的大小。
这应该让你开始。如果,正如我所料,你会想要另一个面板上有一些游戏控件,请查看BorderLayout;它在矩形的每个边上有一个部分,在中间有另一个部分。使用BorderLayout将包含两个网格的面板放在面板的中心,然后您的游戏控件可以放在面板的北面,南面,东面或西边。
祝你好运。如果您有特定问题,请告诉我们(在另一个问题中)。