我正在使用 for循环来创建9 JTextFields ,这很正常。我的问题是,我想检查所有这些 JTextField 是否为空'在一次。我知道有一种方法:
if (textbox.getText().trim().equals(""))
检查JTextField是否为空,但我不确定它是否适合我用于 JTextField 的方法。以下是我的 for循环:
for (int index = 1; index <=9; index++)
{
JTextField field = new JTextField(3);
field.setPreferredSize(new Dimension(150, 50));
field.setHorizontalAlignment(JTextField.CENTER);
field.setEditable(false);
second.add(field);
second.add(Box.createHorizontalStrut(10));
second.add(Box.createVerticalStrut(10));
}
答案 0 :(得分:6)
将文本字段存储在List中,以便稍后可以迭代它们。
public class ClassContainingTextFields {
private final ArrayList<JTextField> textFields = new ArrayList<>();
// ... inside the method that creates the fields ...
for (int i = 0; i < 9; i++) {
JTextField field = new JTextField(3);
// .. do other setup
textFields.add(field);
}
/**
* This method returns true if and only if all the text fields are empty
**/
public boolean allFieldsEmpty() {
for (JTextField textbox : textFields) {
if (! textbox.getText().trim().isEmpty() ) {
return false; // one field is non-empty, so we can stop immediately
}
}
return true; // every field was empty (or else we'd have stopped earlier)
}
// ....
}
答案 1 :(得分:1)
考虑这段代码。
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Test extends JFrame implements ActionListener {
JTextField tfs[];
JButton btn;
public Test(){
setLayout( new FlowLayout());
tfs = new JTextField[9];
for( int i=0; i< tfs.length; i++) {
tfs[i] = new JTextField(10);
add(tfs[i]);
}
add( btn = new JButton("Check"));
btn.addActionListener(this);
setSize(200,300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed (ActionEvent ae){
boolean pass = true;
for(int i=0; i<tfs.length; i++)
if( tfs[i].getText().trim().equals(""))
pass = false;
System.out.println(pass?"Passed":"Failed");
}
public static void main (String args[]){
new Test();
}
}
答案 2 :(得分:1)
如何实现自己的DocumentListener?您可以使用一个布尔值,当所有字段都为空时,该布尔值变为true,并且您可以在字段Document中的每次更改后直接执行各种与hangman相关的检查。