【发布时间】:2014-02-23 16:05:21
【问题描述】:
我在使用 GridBagLayout 时遇到问题。
用户选择了一个文件,如果该文件大于我在其中显示的JTextArea,则共享GridBagLayout 中的所有Swing 组件都会出现问题。如果它能够适应JTextField,则所有 Swing 组件都可以。
这是我想要的JFrame 布局的screenshot:
当包含文件路径的JTextArea 大于其分配的大小时,here 是我得到的JFrame 布局。
所有其他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);
有什么想法吗?
【问题讨论】:
标签: java swing gridbaglayout