繁体   English   中英

Java。 在JPanel上调整大小

[英]Java. Resize issue on a JPanel

以下代码段使我可以使用BorderLayout Manager在JPanel上放置一个JTextfield和2个JButton。

        JPanel strPanel = new ButtonPanel();
        strPanel.setLayout(new BorderLayout());
        setBorder( new EmptyBorder( 3, 3, 3, 3 ) );

        strfield = new JTextField("",70);
        strPanel.add("West", strfield);
        strPanel.add("Center", btnCopy);
        strPanel.add("East", btnPaste);
        add("North", strPanel);

这是截图

在此处输入图片说明

但是,最重要的是,当我调整JFrame的大小时,“复制”按钮被放大了,但是我希望JTextField能够被放大,而不是复制和粘贴按钮保持相同的大小。 这是更新的屏幕截图:

在此处输入图片说明

为了修复它,我下载了NetBeans等并与GUI设计器一起玩,但是即使使用其他布局管理器,我也无法解决。

有人可以照亮吗? 谢谢

BorderLayout将所有剩余的空间留给了CENTER组件,因此不会为该任务删节BorderLayout 如果您可以将布局更改为GridBagLayout那么很简单地将最左边的组件留给剩余的空间。

例:

public static void main(String[] args) {

    JFrame frame = new JFrame("Test");
    frame.setLayout(new GridBagLayout());

    GridBagConstraints gbc = new GridBagConstraints();
    gbc.fill = GridBagConstraints.BOTH;
    gbc.weightx = 1;

    frame.add(new JTextArea("Hello World!"), gbc);

    gbc.weightx = 0;
    frame.add(new JButton("Copy"), gbc);
    frame.add(new JButton("Paste"), gbc);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
}

如果您确实想使用BorderLayout ,则可以将按钮组合在一起,并将它们添加到东部,将文本字段添加到中心,请执行以下操作:

public static void main(String[] args) {

    JFrame frame = new JFrame("Test");

    frame.add(new JTextArea("Hello World!"), BorderLayout.CENTER);
    frame.add(new JPanel(new GridLayout(1, 0)) {{
        add(new JButton("Copy"));
        add(new JButton("Paste"));
    }}, BorderLayout.EAST);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM