4

我正在使用for 循环创建 9 个 JTextField,这工作正常。我的问题是,我想一次检查所有这些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));

            }   
4

3 回答 3

7

将您的文本字段存储在列表中,以便您以后可以对其进行迭代。

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)
    }
    // ....
}
于 2013-06-01T22:11:23.813 回答
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();
    }
}
于 2013-06-02T03:55:55.517 回答
1

实现自己的 DocumentListener 怎么样?当所有字段为空时,您可以有一个布尔值变为真,并且您可以在字段 Document 的每次更改后直接进行各种与刽子手相关的检查。

于 2013-06-02T16:22:05.033 回答