java - 有没有办法在每次按下 JButton 后查找新的字符串输入?
问题描述
我的目标是有一个应用程序可以作为执行不同功能的工具,现在我正在尝试制作一个计算器(仅限文本),但每次按下按钮时都无法找出如何查找新字符串。此外,确保每次按下按钮时才能输入某些命令。
作为语言的介绍,我不知道该怎么做才能做到这一点。
import java.awt.event.*;
import javax.swing.*;
public class Main extends JFrame {
static JTextField tf;
static JFrame frame;
static JPanel panel;
static JTextArea ta;
int count;
int num1;
int num2;
int exp;
char operator;
double answer;
static void GUI() {
frame = new JFrame("Thank you for reading this");
panel = new JPanel();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400,400);
JButton button = new JButton("Test");
tf = new JTextField(15);
panel.add(tf);
panel.add(button);
JTextArea ta = new JTextArea();
ta.setEditable(false);
//button I'm trying to work on
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
ta.append(text+"\n");
if(text.equals("calc")) {
ta.append("What Operation (+, -, *, /, ^)?: \n");
if(text.equals("*"){
//this is where I have trouble}
}
}
});
frame.getContentPane().add(BorderLayout.CENTER, ta);
frame.getContentPane().add(BorderLayout.SOUTH, panel);
frame.setVisible(true);
}
public static void main(String[] args) {
GUI();
}
}
我希望能够在输入 calc 后输入 *,然后继续使用该函数。
解决方案
GUI 编程是事件驱动的。事件通常发生在用户使用键盘或鼠标键入内容时。单击按钮后,您只更改显示的文本JTextArea
。然后你需要等待用户输入一些东西。这种等待不能在actionPerformed()
方法中完成。您可以通过文档上的 a 收听用户在键盘上键入DocumentListener
的JTextArea
内容,如...
Document doc = ta.getDocument();
doc.addDocumentListener(...)
你是如何学习Swing的?对我来说,Oracle 教程和几本书是我学习的方式。
推荐阅读
- python - 为什么只有在我关闭 tkinter 窗口时才结束 while 循环?
- python - Mac 上的 Selenium 使用 Python,如何发出键盘命令
- python - 如何使用python监控迪卡侬产品的可用性?
- flutter - Flutter 条件导入移动端与桌面端
- javascript - background_worker.js 和 popup.js 中的全局常量 - Chrome 扩展 v3
- javascript - Next js在条件渲染上闪烁/闪烁
- javascript - 打字稿界面中符号的计算键
- java - Junit忽略方法模拟
- javascript - 如何通过发布请求方法在标头中发送会话 ID
- python-3.x - 字符串函数为每个打开找到相应的右括号