java不合理的jtextfield大小问题

标签 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() {
        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);

    }
}

nametextocctext 非常小。 我尝试了 new JTextField(20) 和字符串版本, 我试过 setPreferredSize 上面的类(class), 我还尝试了 setColumn,但它们都不起作用。

最佳答案

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

关于java不合理的jtextfield大小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27476555/

相关文章:

Java JLabel 不会更新

java - getGraphics() 返回空值

java - 尝试显示在一个 jpanel 中创建的变量并在另一个 jpanel 中显示它

java - java接口(interface)如何调用对象类的方法

带有空子句的 Java 三元运算符

java - java中在开头声明变量性能更好?

java - 如何使用变量将 JTextField 添加到 JPanel 的特定位置

java - 编译错误代码: illegal start of expression

java - 更改 JScrollBar 箭头高度

java - 更新JComboBox后,如何刷新box的长度