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

时间:2016-05-20 15:25:48

标签: java jtextfield

我们可以将一个可编辑的JTextField添加到一行中的面板,如Java中的panel.add(new JTextField(text));。有没有一种标准的方法可以使用像panel.add(new JTextField(text).setEditable(false));这样的东西来设置它而不编写我们自己的方法?

2 个答案:

答案 0 :(得分:3)

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

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

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

这样做是不好的做法。您应该将其拆分为多行,或者编写一个方法来执行此操作。代码将更易于维护,更容易阅读。

答案 1 :(得分:2)

创建合适的工厂方法:

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;
    }
}