java - GridBagLayout 的麻烦

标签 java swing layout gridbaglayout


我正在尝试制作简单的游戏布局。 我从容器制作布局 - 所有容器都与我的示例类似(这意味着 JPanel、setlayout、添加组件、返回 JPanel)。

整个布局的结构:(这3个在主布局中)
上部 - BorderLayout.PAGE_START;//菜单
中心 - BorderLayout.PAGE_CENTER;//centerContainer()
底部 - BorderLayout.PAGE_END;//statusBar - 只是带有文本的容器


这 3 个容器的放置工作正常,但问题在于 centerContainer 中的放置。
中心容器结构:3个容器——aboutServerContainer、aboutGameContainer、gameContainer。

gameContainer 的大小为 450x450

我想在serverInfo下与gameContainer和gameInfo相同的高度启动serveInfo, 但它以某种方式集中了 serverInfo 并且 gameInfo 位于它之下,但它也在 gameContainer 下腾出了可用空间(我不想要这里有任何可用空间。)

enter image description here

private Container centerContainer() {
        JPanel centerJPanelJP = new JPanel();
        GridBagConstraints gbc = new GridBagConstraints();
        stredniJPanelJP.setLayout(new GridBagLayout());

        //gbc.fill = GridBagConstraints.BOTH;
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.gridheight = 1;
        centerJPanelJP.add(aboutServerContainer(),gbc);

        gbc.gridheight = 1;
        gbc.gridy = 1;
        centerJPanelJP.add(aboutGameContainer(),gbc);

        gbc.gridheight = 2;
        gbc.gridx = 0;
        gbc.gridy = 0;
        centerJPanelJP.add(gamePanelContainer(),gbc);

        return centerJPanelJP;
    }

最佳答案

看起来您正在尝试实现这样的布局:

+-----+-----+
|  A  |     |
+-----+  C  |
|  B  |     |
+-----+-----+

为了实现这一点,网格约束应该是:

  |  x  y  width  height
--+---------------------
A |  0  0    1       1 
B |  0  1    1       1 
C |  1  0    1       2 

在我看来,最好始终使用“强大的”布局管理器,而不是处理特殊情况、嵌套面板和不灵活的排列方式。

关于java - GridBagLayout 的麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9178511/

相关文章:

Java:ArrayBlockingQueue 与 LinkedBlockingQueue

java - 如何使用 JSoup 获取页面中的所有 url 图片?

android - 如何将 android 布局分类为小屏幕、中屏幕、大屏幕、超大屏幕?

java - JDialog 位于屏幕中心,而不是 JApplet 所需的中心

android - 如何创建此 View (布局)?

html - 如何仅使用 css 在 html 中为低罗马有序列表样式着色?

java - 哈希表同步

java - 从wav文件Java语音到文本

java - 在 GridBagLayout 中正确删除元素

java - 在 Netbeans 中创建的 JList 不允许我添加元素