Java 对基于百分比的大小使用GridBagConstraints?

Java 对基于百分比的大小使用GridBagConstraints?,java,swing,resize,layout-manager,gridbaglayout,Java,Swing,Resize,Layout Manager,Gridbaglayout,我正在尝试制作一个JFrame,上面有两个独立的JPanel。左侧应为窗口大小的70%,右侧应为30% 我可能可以通过在JFrame中重写setSize方法,然后将每个面板的大小设置为其中的一个百分比来实现这一点,但是我假设有一种更简单的方法 我已经尝试使用GridBagConstraints来实现这一点,但是,当向右侧面板添加组件时,它会改变左侧面板的大小,即使这些组件的大小从未扩展30% 榜样 应该是这样的 我试着简单地做这件事 GridBagConstraints gbc = n

我正在尝试制作一个JFrame,上面有两个独立的JPanel。左侧应为窗口大小的70%,右侧应为30%

我可能可以通过在JFrame中重写setSize方法,然后将每个面板的大小设置为其中的一个百分比来实现这一点,但是我假设有一种更简单的方法

我已经尝试使用GridBagConstraints来实现这一点,但是,当向右侧面板添加组件时,它会改变左侧面板的大小,即使这些组件的大小从未扩展30%

榜样

应该是这样的

我试着简单地做这件事

    GridBagConstraints gbc = new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.fill = GridBagConstraints.BOTH;
    gbc.anchor = GridBagConstraints.PAGE_START;
    gbc.weightx = 0.7;
    add(new JPanel(), gbc);

    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.weightx = 0.3;
    gbc.anchor = GridBagConstraints.PAGE_END;
    add(new JPanel(), gbc);
但这不起作用


我做错什么了吗?

没有标准布局允许您这样做。查看camickr的“相对布局”,这是他答案中的链接,然后向上投票他的答案。“左边的应该是窗口大小的70%,右边的应该是30%。”为什么?解释这两个区域中有什么东西对它们具有固定的可用宽度百分比是有意义的。
我做错了什么吗?
-weightx属性仅用于分配“额外空间”。因此,首先,每个组件都以其首选大小提供空间。如果以70/30的比例分配了任何额外空间。
JSplitPane
具有
setDividerLocation()
setResizeWeight()