我正在尝试检查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
}
答案 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
在按钮动作监听器之外。您需要在文本区域使用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;