我搜索了所有此类问题,但找不到解决方案。
public class FormPanel extends JPanel
{
private JLabel namelabel;
private JLabel occlabel;
private JTextField nametext;
private JTextField occtext;
private JButton okButton;
public FormPanel() {
Dimension dim = getPreferredSize();
dim.width = 250;
setPreferredSize(dim);
namelabel = new JLabel("Name : ");
occlabel = new JLabel("Occupation : ");
nametext = new JTextField();
nametext.setPreferredSize(new Dimension(80,20));
occtext = new JTextField();
occtext.setColumns(20);
okButton = new JButton("OK");
Border inner = BorderFactory.createTitledBorder("Add Person : ");
Border outer = BorderFactory.createEmptyBorder(5,5,5,5);
setBorder(BorderFactory.createCompoundBorder(inner,outer));
setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();
gc.gridx = 0;
gc.gridy = 0;
gc.weightx = 1;
gc.weighty = 1;
gc.fill = GridBagConstraints.NONE;
add(namelabel,gc);
gc.gridx = 1;
gc.gridy = 0;
add(nametext,gc);
gc.gridy = 1;
gc.gridx = 0;
add(occlabel,gc);
gc.gridy = 1;
gc.gridx = 1;
add(occtext,gc);
gc.gridy = 2;
gc.gridx = 1;
add(okButton,gc);
}
}
nametext
和 occtext
非常小。
我尝试了 new JTextField(20) 和字符串版本,
我试过 setPreferredSize 上面的类(class),
我还尝试了 setColumn,但它们都不起作用。
最佳答案
去掉 setPreferredSize(dim);
。通过在顶级窗口上调用 pack()
让 GUI 自行调整大小,您的问题可能会消失。您将容器的大小限制为小于最适合它的大小,这样一来,GridBagLayout 将以一种糟糕的方式缩小其组件,包括您的 JTextFields。
关于java不合理的jtextfield大小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27476555/