简体   繁体   English

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

[英]Java add a non-editable tJTextField in one line

We can add an editable JTextField to a panel in one line like this panel.add(new JTextField(text)); 我们可以像这样的面板一样在一行中向面板添加可编辑的JTextField.add panel.add(new JTextField(text)); in Java. 在Java中。 Is there a standard way to set it non-editable using something like panel.add(new JTextField(text).setEditable(false)); 是否有一种标准方法可以使用panel.add(new JTextField(text).setEditable(false));类的设置使其不可编辑panel.add(new JTextField(text).setEditable(false)); without writing our own method? 没有编写我们自己的方法?

It's possible to do it that way, but you still shouldn't. 可以这样做,但您仍然不应该这样做。

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

This creates an anonymous class, which sets it as not editable in the initialization block. 这将创建一个匿名类,该类在初始化块中将其设置为不可编辑。

Doing it that way is considered bad practice though. 那样做虽然被认为是不好的做法。 You should just split it into multiple lines, or write a method to do it. 您应该将其分成多行,或编写一个方法来完成。 The code will be more maintainable and easier to read that way. 该代码将更易于维护,并且更易于阅读。

Create a proper factory method: 创建适当的工厂方法:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM