簡體   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