Извлечение AbstractAction actionListener из JTextField из другого класса

У меня проблема с личным проектом, над которым я работаю на Java. Я создаю консоль, которая принимает команды и делает конкретные вещи в результате. Чтобы принимать команды, я использую слушатель AbstractAction для JTextField и JButton, чтобы определить, когда двигаться дальше. Вот этот код:

//Action Listener
    Action action = new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
            String entryText = textField.getText();
            textArea.append("\n>" + entryText);
            if(entryText.equals("")) {
                textArea.append("\nYou entered nothing.");
                textField.setText("");
            }
            else if(entryText.equals("/sentence")) {
                textField.setText("");
                int remove = 1;
                SentenceCreator.SentenceCreator(textArea, textField, btnEnter);
            }
            else if(entryText.equals("/help")) {
                textArea.append("\n");
                textArea.append("\n# HELP");
                textArea.append("\n/help displays this help section.");
                textArea.append("\n/sentence starts the Sentence Creator.");
                textArea.append("\n/clear will clear the console.");
                textArea.append("\nMore functionality coming soon...");
                textArea.append("\n");
                textField.setText("");
            }
            else if(entryText.equals("/clear")) {
                textArea.setText("");
                textField.setText("");
            }
            else {
                textArea.append("\nInvalid command! Enter /help for help!");
                textField.setText("");
            }
        }
    };
    //Add ActionListener TextField and Button
    textField.addActionListener(action);
    btnEnter.addActionListener(action);

Как вы можете видеть, если пользователь вводит / предложение, оно переходит ко второму классу, SentenceCreator, который отвечает за выполнение функции этой команды. Вот код в моем классе SentenceCreator:

package console.main;

import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class SentenceCreator {

    //String s = "14.015_AUDI";
    //String[] parts = s.split("_"); //returns an array with the 2 parts
    //String firstPart = parts[0]; //14.015

    public static void SentenceCreator(JTextArea textArea, JTextField textField, JButton btnEnter, Action action) {
        textArea.append("\n");
        textArea.append("\n# Sentence Creator");
        textArea.append("\nPlease enter your vocabulary word and it's part of speech:\r\ni.e. scurried verb");

        Action action2 = new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String entryText = textField.getText();
                textArea.append("\n>" + entryText);
                textArea.append("\n");

            }
        };
        textField.addActionListener(action2);
        btnEnter.addActionListener(action2);
    }

}

Моя главная проблема заключается в том, что мне нужно идти в этот второй класс, ждать ввода пользователя и продолжить его с этой частью программы. Без создания нового отдельного actionListener с использованием AbstractAction, я просто возвращаюсь к первому блоку кода, когда я пытаюсь ввести новый ввод, предназначенный для второго класса. Мой обходной путь - просто использовать этот новый actionListener. Поэтому, если это возможно, я хотел бы иметь возможность удалить JTextField и JButton из первого слушателя и добавить их во второй. Затем, после того, как я закончу с этим классом, он может вернуться к первому классу и переназначить первоначальный слушатель на JTextField и JButton.

Спасибо

0 ответов

Другие вопросы по тегам