JTextArea появляется, но для дальнейших действий я получаю пустой

У меня есть класс "MainFrame1", который расширяет JFrame, а также другой класс, который является средством выбора файлов. Всякий раз, когда я нажимаю один из JMenuItems в классе MainFrame1, я хочу, чтобы средство выбора файлов открывалось и загружало текст выбранного файла в JTextArea, который был создан в классе MainFrame1. Это прекрасно работает, так как я создал отдельный класс, реализующий ActionListener. Теперь моя проблема в том, что когда я нажимаю другой JMenuItem, я хочу сделать что-то еще с текстом в JTextArea. Я реализовал другой ActionListener для этого в другом классе, но проблема в том, что JTextArea кажется пустым, когда я делаю это, хотя я вижу текст там. Заранее спасибо.

Вот как я создал JTextArea в MainFrame1:

showAction = new JTextArea(10,10);
showAction.setEditable(false);
showAction.setFont(new Font("Arial", Font.BOLD, 12));
add(showAction, BorderLayout.NORTH);    

И это мой второй класс ActionListener (также всякий раз, когда текст файла печатается в JTextArea, текст "загружен" также будет напечатан), и я всегда получаю ветку else.

public class TransformController implements ActionListener{

    MainFrame1 mf;
    public TransformController(MainFrame1 mf) {
        this.mf = mf;
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        String text = mf.showAction.getDocument().toString();
        if(text.contains("loaded up.")) {
            char[] charText = text.toCharArray();
            Parser parser1 = new Parser(charText);
            parser1.packageVisitor();
        }
        else {
            System.out.println("Load up a Java file first!");
        }
    }   
}

1 ответ

Похоже, это в основном вопрос отладки: во-первых, выясните, что находится в showAction.getDocument(), чтобы увидеть, правильно ли загружается ваш пункт меню. Затем проверьте (с помощью IDE или с помощью toString()), что mf.showAction действительно является одним и тем же объектом в обоих случаях.

Конструктивно в Java нет ничего, что препятствовало бы тому, чтобы вы имели ссылку на один и тот же JTextArea в двух частях кода и считывали текст из него для различных целей.

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