0

我正在尝试找出一种动态创建 JTextfield 而不将其分配给变量的方法。

panel.add(new JTextField("hello"));

上面的代码工作得很好,但是当我尝试像下面这样操作时,编译器说这里不允许使用 Void。我是初学者,我知道这可能很简单,请帮助我。

panel.add(new JTextField("hello").setForeground(Color.yellow));
4

3 回答 3

3

setForeground返回void。它修改JTextField而不是返回一个新的。

这样做可能会有所帮助:

JTextField field = new JTextField("hello");
field.setForeground(Color.yellow);
panel.add(field);
于 2013-05-16T21:15:48.193 回答
2

您可以定义自己的构造函数,以便将这些调用链接在一起,尽管我不知道是否值得麻烦,只是为了避免变量。

private JTextField newColoredTextField(String s, Color c) {
    JTextField tf = new JTextField(s);
    tf.setForeground(c);
    return tf;
}

然后你可以像这样使用它:

panel.add(newColoredTextField("hello", Color.yellow));
于 2013-05-16T21:21:05.487 回答
1

您不能将构造函数和对 setForeground 的调用链接在一起。该语句的返回值将是最后一个方法调用的返回值,即void.

相反,您需要实例化该字段,修改它,然后添加它:

JTextField field = new JTextField("hello");
field.setForeground(Color.yellow);

panel.add(field);
于 2013-05-16T21:16:20.763 回答