Есть ли способ искать новый ввод строки после нажатия кнопки JButton каждый раз? - PullRequest
0 голосов
/ 03 июня 2019

Моя цель - создать приложение, которое будет работать как инструмент для выполнения различных функций, сейчас я пытаюсь создать калькулятор (только текст), но у меня возникают проблемы с поиском новых строк каждый раз, когда нажимается кнопка. нажат. Кроме того, убедитесь, что определенные команды можно вводить только при каждом нажатии кнопки.

Будучи знакомым с языком, я не знаю, что сделать, чтобы это произошло.

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, а затем продолжить с этой функцией.

1 Ответ

0 голосов
/ 03 июня 2019

Программирование GUI осуществляется на основе событий.Событие обычно происходит, когда пользователь что-то печатает с клавиатуры или использует мышь.После нажатия кнопки вы меняете текст, отображаемый только на JTextArea.Тогда вам нужно подождать, пока пользователь что-то наберет.Это ожидание нельзя сделать в методе actionPerformed().Вы можете слушать, как пользователь печатает на клавиатуре с помощью DocumentListener в документе JTextArea, как в ...

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

Как вы изучаете Swing ?Для меня уроки Oracle вместе с несколькими книгами были тем способом, которым я научился.

...