我遇到了GridBagLayout
問題。GridBagLayout故障
用戶選擇一個文件,如果該文件大於我在其中顯示的JTextArea
,共享GridBagLayout
中的所有Swing組件都會出現故障。如果它能夠適應JTextField
,那麼所有的Swing組件都可以。
這裏是JFrame
佈局我渴望的screenshot:
而且here是JFrame
佈局,我得到當含有文件路徑JTextArea
比指定大小大。
所有其他JTextFields
受到影響,以及下面的按鈕。我不在乎JTextArea
中的文字是否大於其尺寸,我只是希望所有的擺動組件保持不變。
下面是代碼,我添加Swing組件到文件信息面板:
//Setup layout.
gbc = new GridBagConstraints();
//File info panel.
gbc.insets = new Insets(3, 10, 3, 10);
gbc.gridx = 0;
gbc.gridy = 0;
gbc.fill = GridBagConstraints.HORIZONTAL;
info_panel.add(first_name_jta, gbc);
gbc.gridx = 1;
gbc.gridy = 0;
info_panel.add(first_name_tf, gbc);
gbc.gridx = 0;
gbc.gridy = 1;
info_panel.add(last_name_jta, gbc);
gbc.gridx = 1;
gbc.gridy = 1;
info_panel.add(last_name_tf, gbc);
gbc.gridx = 0;
gbc.gridy = 2;
info_panel.add(frame_type_jta, gbc);
gbc.gridx = 1;
gbc.gridy = 2;
info_panel.add(frame_type_cb, gbc);
gbc.gridx = 0;
gbc.gridy = 3;
info_panel.add(eye_size_jta, gbc);
gbc.gridx = 1;
gbc.gridy = 3;
info_panel.add(eye_size_tf, gbc);
//Frame panel.
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 2;
gbc.fill = GridBagConstraints.BOTH;
frame_panel.add(file_path_tf, gbc);
gbc.gridy = 1;
frame_panel.add(info_panel, gbc);
gbc.gridy = 2;
gbc.insets = new Insets(10, 60, 10, 60);
gbc.fill = GridBagConstraints.NONE;
gbc.anchor = GridBagConstraints.WEST;
frame_panel.add(save_button, gbc);
gbc.gridx = 1;
gbc.gridy = 2;
gbc.anchor = GridBagConstraints.EAST;
frame_panel.add(cancel_button, gbc);
任何想法?
文件路徑是一個'JTextField'。當JTextField具有更大的值時,所有東西都會縮小。當它的值較小時,每個組件都被設置爲其默認大小。 – Foxslaughter
你能提供一個可運行的例子嗎,你的代碼讓我失望;) – MadProgrammer
我盡我所能將你的代碼示例重構爲一個可運行的示例並更新了答案 – MadProgrammer