簡體   English   中英

如何檢查JTextField中輸入的數字

[英]How to check JTextField for an entered number

我正在嘗試檢查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
}

使用變量存儲文本:

String theText;
theText = textArea.getText();

然后做字符串比較:

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

或速記:

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

另外,if語句應位於actionPerformed方法內部,否則在單擊按鈕時已被執行(導致FALSE)。 如果要在每次單擊按鈕時在文本區域中的每個先前的“ 1”后面添加一個新的“ 1”,請使用textArea.append();否則,請使用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");
               }       
      }});
   }
}

更新:

如果您不僅要在按下按鈕時檢查文本區域的內容,還要在輸入文本時檢查文本區域的內容。 if-statement您的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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM