【发布时间】:2014-07-08 05:08:29
【问题描述】:
编辑:每次我尝试添加gui 标签时,它都会切换到user-interface。有人介意解释/解决这个问题吗?
我希望客户端可调整大小。我希望 JSeparator 在调整大小时填充框架的宽度,但我希望 JLabels 留在字段旁边。
开始是这样的,JLabels 与字段的距离太远了:
当我水平调整它的大小时,结果如下:
这显然相距甚远。我用来设置这些组件的代码是:
public class LoginPanel extends JPanel {
private JTextField userfield = new JTextField(10);
private JPasswordField passfield = new JPasswordField(10);
private JButton login = new JButton("Login");
private JButton create = new JButton("Create Account");
public LoginPanel() {
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.CENTER;
gbc.weightx = 1;
gbc.gridx = 2;
JLabel label = new JLabel("Username: ");
add(label, gbc);
gbc.gridx = 3;
gbc.gridwidth = 2;
add(userfield, gbc);
gbc.gridy = 1;
add(passfield, gbc);
gbc.gridx = 2;
label = new JLabel("Password: ");
add(label, gbc);
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridy = 2;
gbc.gridx = 1;
gbc.gridwidth = 5;
add(new JSeparator(JSeparator.HORIZONTAL), gbc);
}
}
(不得不删掉一些东西,如果我遗漏了什么,请告诉我) 我已经尝试锚定,但我仍然不是 100% 熟悉 GridBagLayout(和约束),所以我不确定我的尝试是否朝着正确的方向。
如何防止 Username: 和 Password: 标签从我的字段中移开,但仍然可以调整大小?
另外,我想使用 GridBagLayout。我还有很多东西需要添加,我不想使用简单的布局,因为我需要灵活性。
【问题讨论】:
标签: java swing user-interface layout gridbaglayout