我正在尝试一种动态创建JTextfield的方法,而不将其分配给变量。
panel.add(new JTextField("hello"));
上面的代码工作正常,但是当我尝试和操作如下时编译器说Void不允许在这里。我是初学者,我知道这可能很简单,请帮帮我。
panel.add(new JTextField("hello").setForeground(Color.yellow));
答案 0 :(得分:3)
setForeground
返回void
。它会修改JTextField
,而不是返回一个新的。{/ p>
这样做可能会有所帮助:
JTextField field = new JTextField("hello");
field.setForeground(Color.yellow);
panel.add(field);
答案 1 :(得分:2)
您可以定义自己的构造函数,这样您就可以将这些调用链接在一起,虽然我不知道它是否值得麻烦,只是为了避免变量。
private JTextField newColoredTextField(String s, Color c) {
JTextField tf = new JTextField(s);
tf.setForeground(c);
return tf;
}
然后您可以这样使用它:
panel.add(newColoredTextField("hello", Color.yellow));
答案 2 :(得分:1)
您不能将构造函数和对setForeground的调用链接在一起。语句的返回值将是最后一个方法调用的返回值,即void
。
相反,您需要实例化该字段,修改它,然后添加它:
JTextField field = new JTextField("hello");
field.setForeground(Color.yellow);
panel.add(field);