【问题标题】:Java. Resize issue on a JPanel爪哇。在 JPanel 上调整大小问题
【发布时间】:2012-07-23 06:19:39
【问题描述】:

以下代码 sn-p 允许我使用 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 设计器进行操作,但我无法解决它,即使使用不同的布局管理器也是如此。

有人能解释一下吗?谢谢

【问题讨论】:

  • @Wug 如果你知道如何使用它。
  • 我知道如何使用它很好,但我仍然不喜欢它。
  • @Wug 这绝对不是编程世界的最佳选择,但它非常强大。读了那条评论,我觉得很严厉,这不是我的本意。我只是想指出,如果你知道正确的技巧,挥杆几乎可以做任何你需要的事情。

标签: java swing layout


【解决方案1】:

BorderLayout 不适合此任务,因为它将所有剩余空间提供给CENTER 组件。如果您可以将布局更改为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);

}

【讨论】:

  • 感谢 dacwe 的快速且内容丰富的回复!现在工作。为简单起见,我坚持使用 BorderLayout,但 Gridbag 是要走的路。干杯
  • 更新。实施了 Gridbag 方法——更加灵活和可扩展。再次,干杯!!
  • 太棒了 :-) 很难知道在什么情况下选择哪种布局。阅读所有这些内容,您会更容易获得“最好的”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-22
  • 2012-05-16
相关资源
最近更新 更多