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 в двух частях кода и считывали текст из него для различных целей.