首页 > 解决方案 > 有没有办法在每次按下 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 后输入 *,然后继续使用该函数。

标签: javaswingif-statementactionlistener

解决方案


GUI 编程是事件驱动的。事件通常发生在用户使用键盘或鼠标键入内容时。单击按钮后,您只更改显示的文本JTextArea。然后你需要等待用户输入一些东西。这种等待不能actionPerformed()方法中完成。您可以通过文档上的 a 收听用户在键盘上键入DocumentListenerJTextArea内容,如...

Document doc = ta.getDocument();
doc.addDocumentListener(...)

你是如何学习Swing的?对我来说,Oracle 教程和几本书是我学习的方式。


推荐阅读