Java JTextField ActionListener检查字段是否有输入

时间:2014-08-26 10:44:32

标签: java validation input actionlistener jtextfield

我有这段代码:

    static JFrame inputFrame = new JFrame();
    static JTextField myTextfield = new JTextField();
    static JButton myButton = new JButton("Hi!");

private static void inputGUI() {
    inputFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    inputFrame.setTitle("The INPUT");
    inputFrame.setLayout(new FlowLayout());
    inputFrame.setSize(1366,768);
    inputFrame.setVisible(true);

    inputFrame.add(myTextField);
    inputFrame.add(myButton);

    myButton.setEnabled(false);
    myTextField.addActionListener(myListener);
}
static ActionListener myListener = new ActionListener(){
    public void actionPerformed(ActionEvent e){
        if(e.getSource()==inputFrame){
            //What Do I put here?
        }
    }
}

我想做的是:
当我在myTextField中输入内容而未按Enter键时,按钮myButton已启用(例如myButton.setEnabled(true);)。

3 个答案:

答案 0 :(得分:1)

The best solution正在使用DocumentFilter。因此它可以检查您的JTextField何时包含某些内容,然后您可以触发按钮激活。

在这里,我重新编码了你的代码:

  import java.awt.*;
  import javax.swing.*;
  import javax.swing.text.AbstractDocument;
  import javax.swing.text.AttributeSet;
  import javax.swing.text.BadLocationException;
  import javax.swing.text.DocumentFilter;

class checkText extends DocumentFilter {
public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text,
        AttributeSet attrs) throws BadLocationException {
        super.replace(fb, offset, length, text, attrs);
       GuiTest.enableButton();
       }
      }

 public class GuiTest extends JFrame {
static JFrame inputFrame = new JFrame();
static JTextField myTextfield = new JTextField(10);
static JButton myButton = new JButton("Hi!");

public GuiTest() {
    inputGUI();
}

private static void inputGUI() {
    inputFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    inputFrame.setTitle("The INPUT");
    inputFrame.setLayout(new FlowLayout());
    inputFrame.setSize(1366, 768);
    inputFrame.setVisible(true);

    inputFrame.add(myButton);

    DocumentFilter filter = new checkText();
    ((AbstractDocument) myTextfield.getDocument()).setDocumentFilter(filter);
    inputFrame.add(myTextfield);
    myButton.setEnabled(false);
}

public static void enableButton() {
    myButton.setEnabled(true);
}

public static void main(String args[]) { new GuiTest(); }
}

之前:

enter image description here

之后:

enter image description here

答案 1 :(得分:-1)

您只需插入此代码:

JTextField jTF = (JTextField)e.getSource();
if( jTF.getText().length()>0 )
    myButton.setEnabled(true);

回答评论:

  • 读取isEmpty()的javadoc,当且仅当长度== 0时才返回true,所以它只是一样。
  • 我没有发表任何评论,因为最初的问题是"我在这里放了什么代码",所以我发布了代码,首先确实没有错。

答案 2 :(得分:-2)

试试这个

myTextField.addKeyListener(new java.awt.event.KeyAdapter() {

        public void keyPressed(java.awt.event.KeyEvent evt) {

            if(myTextField.getText().isEmpty()){
                myButton.setEnabled(false);
             } else{
                myButton.setEnabled(true);
             }
            }
         });

我希望它会有所帮助!