我在Java中创建了如下文本字段。当我点击“清除”按钮时,我想立即清除所有这些文本字段。
private javax.swing.JTextField num1;
private javax.swing.JTextField num2;
private javax.swing.JTextField num3;
private javax.swing.JTextField num4;
private javax.swing.JTextField num5;
private javax.swing.JTextField num6;
private javax.swing.JTextField num7;
现在我想知道如何使用for循环清除所有文本字段,如:
for(int i=1;1<7;i++){
num[i].settext(null);
}
答案 0 :(得分:7)
您可以通过container.getComponents()方法轻松获取容器内的组件,并考虑一些重要的事情:
使用此方法:
public void clearTextFields (Container container){
for(Component c : container.getComponents()){
if(c instanceof JTextField){
JTextField f = (JTextField) c;
f.setText("");
}
else if (c instanceof Container)
clearTextFields((Container)c);
}
}
调用这样的方法:
clearTextFields(this.getContentPane());
答案 1 :(得分:7)
这样的代码:
private javax.swing.JTextField num1;
private javax.swing.JTextField num2;
private javax.swing.JTextField num3;
private javax.swing.JTextField num4;
private javax.swing.JTextField num5;
private javax.swing.JTextField num6;
private javax.swing.JTextField num7;
是否需要使用集合或数组来排列和简化代码。因此,如果您使用JTextField数组或更好的ArrayList<JTextField>
。然后清除所有这些都是微不足道的。
public static final int FIELD_LIST_COUNT = 7;
private List<JTextField> fieldList = new ArrayList<JTextField>();
// in constructor
for (int i = 0; i < FIELD_LIST_COUNT; i++) {
JTextField field = new JTextField();
fieldList.add(field);
fieldHolderJPanel.add(field); // some JPanel that holds the text fields
}
// clear method
public void clearFields() {
for (JTextField field : fieldList) {
field.setText("");
}
}