我正在尝试格式化这些 JTextFields,它们工作正常。然而,每当我添加第 4 行和第 5 行时,JTextfields 就会变得像 1 个字符长(如屏幕截图所示)。我没有看到任何语法错误或任何东西,因为第一行到第三行本身工作得很好——所以我假设我只是不知道布局管理器或其他东西的一些限制。
public PatientTab () {
GridBagConstraints gbc = new GridBagConstraints();
setLayout(new GridBagLayout());
ButtonGroup sexGroup = new ButtonGroup();
sexGroup.add(maleRadioButton);
sexGroup.add(femaleRadioButton);
//row 1
gbc.gridx = 0;
gbc.gridy = 0;
add(new JLabel("First Name:"), gbc);
gbc.gridx = 1;
add(fName, gbc);
gbc.gridx = 2;
add(new JLabel("Middle Initial:"), gbc);
gbc.gridx = 3;
add(mName, gbc);
gbc.gridx = 4;
add(new JLabel("Last Name:"), gbc);
gbc.gridx = 5;
add(lName, gbc);
// Row 2
gbc.gridx = 0;
gbc.gridy = 1;
add(new JLabel("Sex:"), gbc);
gbc.gridx = 1;
add(maleRadioButton, gbc);
gbc.gridx = 2;
add(femaleRadioButton, gbc);
// Row 3
gbc.gridx = 0;
gbc.gridy = 2;
add(new JLabel("SSN:"), gbc);
gbc.gridx = 1;
add(ssn, gbc);
gbc.gridx = 2;
add(new JLabel("Primarary-care Doctor:"), gbc);
gbc.gridx = 3;
add(primaryDoctor, gbc);
// Row 4
gbc.gridx = 0;
gbc.gridy = 3;
add(new JLabel("Secondary-care Doctor:"), gbc);
gbc.gridx = 1;
secondaryDoctor.setPreferredSize(new Dimension(10,20));
add(secondaryDoctor, gbc);
// Row 5
gbc.gridx = 0;
gbc.gridy = 4;
add(new JLabel("Current Phone Number:"), gbc);
gbc.gridx = 1;
add(currentPhone, gbc);
/*gbc.gridx = 0;
gbc.gridy = 1;
add(addButton, gbc);*/
}
有时需要设置框架或面板的尺寸。方法
pack()
也可以帮助:
frame.pack();
frame.setMinimumSize(frame.getSize());