Java 在一行中添加一个不可编辑的 tJTextField

Java add a non-editable tJTextField in one line

我们可以在 Java 中像这样 panel.add(new JTextField(text)); 在一行中将可编辑的 JTextField 添加到面板。有没有一种标准的方法可以在不编写我们自己的方法的情况下使用 panel.add(new JTextField(text).setEditable(false)); 之类的方法将其设置为不可编辑?

可以这样做,但您仍然不应该这样做。

panel.add(new JTextField(text){{setEditable(false);}});

这将创建一个匿名 class,在初始化块中将其设置为不可编辑。

虽然这样做被认为是不好的做法。你应该把它分成多行,或者写一个方法来做。这样代码将更易于维护和阅读。

创建合适的工厂方法:

public static void main(String[] args)
{
    JPanel panel = new JPanel();
    NonEditableTextFieldFactory nonEditableTextFieldFactory = new NonEditableTextFieldFactory();

    panel.add(nonEditableTextFieldFactory.createNonEditable());
    panel.add(nonEditableTextFieldFactory.createNonEditable());
    panel.add(nonEditableTextFieldFactory.createNonEditable());
}

static class NonEditableTextFieldFactory
{
    public JTextField createNonEditable()
    {
        JTextField jTextField = new JTextField();
        jTextField.setEditable(false);
        return jTextField;
    }
}