使用Java JSplitPane调整控件大小

5
请查看下面链接中的图片,然后阅读下面的内容以了解我的问题详情。 示例图片 想象一下这是一个基本框架,通过JSplitPane分成两部分。默认情况下,当您调整框架大小时,灰色部分会改变大小,但我希望白色部分能够随着框架大小的调整而自动调整大小。
如果您能给出正确的方向指引,将不胜感激,因为我正在进行一个项目,并尝试各种奇怪的东西,以准备迎接明年最大的项目。 :)
谢谢! Theron
1个回答

12

您需要使用setResizeWeight方法来在JFrame大小调整时让左边和右边占用额外空间或者缩小尺寸,下面是示例代码:

    import java.awt.BorderLayout;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JSplitPane;

    public class TestJSplitPane {
    private void init(){
        JFrame frame = new JFrame();
        frame.setLayout(new BorderLayout());
        JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
        splitPane.setRightComponent(new JButton("Here I Am"));
        splitPane.setLeftComponent(new JButton("Me Too"));
        splitPane.setResizeWeight(0.5);
        frame.add(splitPane, BorderLayout.CENTER);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new TestJSplitPane().init();
    }
}

setResizeWeight的Java文档。

希望能对你有所帮助。


谢谢,但是像你现在的例子一样,我希望右侧组件的大小在调整大小时保持静态,并将额外的大小添加到左侧组件。 - Theron084
在上面的例子中,将splitPane.setResizeWeight(0.5)替换为splitPane.setResizeWeight(1.0),这将确保右侧组件在调整大小时不会占用额外的空间。 - mprabhat
mprabhat,非常感谢,我搞定了,现在它可以工作了。你们中有人可能有关于如何使用JMenuBar和Synth LAF的教程链接吗? - Theron084
从Oracle文档:Synth LAF - http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/synth.html,JMenu - http://docs.oracle.com/javase/tutorial/uiswing/components/menu.html - mprabhat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接