[英]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.