例如,我有20个不同的JTextField
,让我说我需要将文本设置为所有"随机",所以我不想这样做:
field1.setText("Random");
field2.setText("Random");
field3.setText("Random");
.
.
.
field20.setText("Random");
有没有办法避免这种情况?
答案 0 :(得分:7)
这是一个非常基本的问题。你可以这样做:
Stream.of(field1,field2,...,field3).forEach(f -> f.setText("Random"));
或没有Java 8:
JTextField fields = Arrays.asList(field1,field2,...,field3);
for (JTextField field : fields)
field.setText("Random");
或者,如果您不需要保留对您的字段的引用:
for (int i=0 ; i<20 ; i++) {
JTextField field = new JTextField("Random");
// place your field in the UI
}
答案 1 :(得分:4)
尝试类似:
JTextField[] textFields = new JTextField[20];
for (int i =0; i< fields.length; i++) {
//init here text fields
textFields[i].setText("Random");
}
答案 2 :(得分:3)
在数组或JTextField
中创建Collection
,然后遍历数组的内容。
例如:
List<JTextField> myTextFields = new ArrayList<JTextField>();
for (int i = 0; i < 20; i++) {
myTextFields.add(new JTextField()); //Instantiate the textfields
//Do whatever other initialization, if you can do it in a loop (like position, etc.)
myTextFields.get(i).setText("Random"); //Set text on all of them.
}
答案 3 :(得分:2)
还要涵盖到目前为止未提及的可能性:
你可以(虽然你真的不应该在大多数情况下)从JTextField
继承并开展业务,例如在构造函数中。或者您可以使用工厂方法。
(下面的示例是用一只手写的未经测试的代码)
class MyTextField extends JTextField {
public MyTextField() {
setText("Random");
}
}
/* in other file */
class MyTextFildFactory {
public static JTextField createTextField() {
JTextField field = new JTextField();
field.setText("Random");
return field;
}
}