![](/img/trans.png)
[英]How to place a number entered from a JButton into next JTextfield if previous JTextField already has a number in it
[英]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
位於按鈕動作偵聽器之外,則屬於相同的“想法”。 您需要在文本區域上使用FocusListener
或KeyListener
。 當您單擊或單擊文本區域時,將執行焦點偵聽器。 按鍵監聽器將在各種類型的按鍵按下/釋放等操作上執行。我認為您正在尋找的是基於您的評論的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.