如何检查JTextField输入的数字

时间:2016-01-26 23:51:03

标签: java jtextfield

我正在尝试检查if语句中已按下的数字按钮。我试图谷歌这个问题,但也许我不能很好地说出这个问题。

这是代码,我读到更少的代码更容易理解,所以我试图尽可能地压缩我的问题,我希望我没有过多地压缩它。

JButton One = new JButton("1");
One.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        textArea.append("1");
    }
});
if(textArea.equals("1")){
    System.out.println("test");//doesnt print
}

1 个答案:

答案 0 :(得分:0)

使用变量存储文本:

String theText;
theText = textArea.getText();

然后进行字符串比较:

if(theText.equals("1")) {}

或简写:

if(textArea.getText().equals("1")) {}

此外,if语句应该在actionPerformed方法中,否则在单击按钮时它已经被执行(导致FALSE)。如果你想追加一个新的" 1"请使用textArea.append()。到之前的每一个" 1"每次单击按钮时在文本区域中,否则使用textArea.setText()来不断覆盖之前的" 1"从之前的任何按钮点击设置。这里可以看到一个工作实例:

import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.JPanel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

public class Tester {
   public static void main(String args[]) {
      JButton aButton = new JButton("Button");

      JPanel aPanel = new JPanel();
      JTextArea aTextArea = new JTextArea();
      JFrame aFrame = new JFrame();

      aFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      aFrame.setSize(200, 200);

      aPanel.add(aTextArea);
      aPanel.add(aButton);

      aFrame.add(aPanel);
      aFrame.setVisible(true);

      aButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
               aTextArea.setText("1"); 
               if(aTextArea.getText().equals("1")) {
                  System.out.println("Test Works");
               }       
      }});
   }
}

<强>更新

如果您不仅要在按下按钮时检查文本区域的内容,还要在输入文本时检查。有点相同&#34;想法&#34;你的if-statement在按钮动作监听器之外。您需要在文本区域使用FocusListenerKeyListener。当您单击或单击文本区域时,将执行焦点侦听器。一个关键的监听器将执行各种类型的按键/释放等。我认为您正在寻找的是基于您的评论的KeyListener。我提供了每个例子,与我之前的例子一致:

 /* 
   This is probably not the one you want
 */
  aTextArea.addFocusListener(new FocusListener() {
        public void focusGained(FocusEvent e) {
        }
        public void focusLost(FocusEvent e) {  
           if(aTextArea.getText().equals("1")) {
              System.out.println("Test Worls");
        }
  }});

  /*
    With this KeyListener
    The second someone types "1" in the text area
    It compares the strings, and the test works
  */
  aTextArea.addKeyListener(new KeyListener() {
     public void keyTyped(KeyEvent e) {
     }

     public void keyReleased(KeyEvent e) {
        String currentText = aTextArea.getText();
        if(currentText.equals("1")) {
           JOptionPane.showMessageDialog(null, "Test Works");
        }
     }

     public void keyPressed(KeyEvent e) {
     }

  });

尝试在我之前提供的示例中插入上述代码。请记住注释掉按钮ActionListener并导入以下内容:

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;