java字段大小调整问题

java字段大小调整问题,java,swing,jtextfield,gridbaglayout,preferredsize,Java,Swing,Jtextfield,Gridbaglayout,Preferredsize,我已经搜索了所有类似的问题,但找不到解决方案 public class FormPanel extends JPanel { private JLabel namelabel; private JLabel occlabel; private JTextField nametext; private JTextField occtext; private JButton okButton; public FormPanel() {

我已经搜索了所有类似的问题,但找不到解决方案

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
非常小。 我尝试了新的JTextField(20)和字符串版本, 我试着把我喜欢的尺寸设置在课堂上,
我也试过setColumn,但都不起作用。

去掉
setPreferredSize(dim)。让GUI通过在顶级窗口上调用
pack()
来调整自身大小,您的问题很可能会消失。您将容器的大小限制为可能小于最适合它的大小,这样做,GridBagLayout将以一种不好的方式收缩其组件,包括您的JTextFields。

如果您使用
pack()
设置
dim.height
,可能是一个好主意

Dimension dim = getPreferredSize();
dim.width = 500;
dim.height = 200;
setPreferredSize(dim);

namelabel = new JLabel("Name : ");
nametext = new JTextField();

occlabel = new JLabel("Occupation : ");
occtext = new JTextField();

okButton = new JButton("OK");

Border inner = BorderFactory.createTitledBorder("Add Person : ");
Border outer = BorderFactory.createEmptyBorder(5, 5, 5, 5);
setBorder(BorderFactory.createCompoundBorder(inner, outer));

GridBagLayout gl = new GridBagLayout();
GridBagConstraints gc = new GridBagConstraints();
setLayout(gl);

gc.fill = GridBagConstraints.HORIZONTAL;
gc.gridwidth = 1;
add(namelabel, gc);

gc.gridy = 1;
add(occlabel, gc);

gc.gridx = 1;
gc.gridy = 0;
gc.weightx = .5;
add(nametext, gc);

gc.gridy = 1;
add(occtext, gc);

gc.fill = GridBagConstraints.NONE;
gc.anchor = GridBagConstraints.EAST;
gc.gridy = 2;
gc.gridx = 1;
gc.weightx = 0;
gc.insets = new Insets(10,0,0,0);
add(okButton, gc);  

@维维安玛雅:很高兴这有帮助。要看到这一点,只需用鼠标在上面的JPanel中重新调整GUI的大小,然后看着JTextFields变小,但在某些关键的大小下,变得非常小且无法使用。