Задайте значение JTextArea из другого класса

121
17

Мой вопрос JTextArea: как я могу установить значение JTextArea из другого класса? Это класс, который содержит JTextArea и расширяет JFrame:

public class JTreeFiles extends javax.swing.JFrame {

private javax.swing.JTextArea jTextArea1;

public JTreeFiles() {
initComponents();
}
public JTextArea setTextArea(){
return this.jTextArea1;
}
}

Это, когда я пытаюсь установить значение JTextArea:

 tree.addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
TreePath tp = tree.getSelectionPath();
if (tp != null) {
Object filePathToAdd = tp.getLastPathComponent();
//System.out.println(filePathToAdd);
if (filePathToAdd instanceof FileTreeNode) {
FileTreeNode node = (FileTreeNode) filePathToAdd;
File file = node.getFile();

if (file.isFile() && file.getName().endsWith(".java")) {

JTreeFiles jf = new JTreeFiles();
jf.setTextArea().setText("Text Here"); //Nothing happen here

}
}
}
}
}

Но ничего не происходит, текст не отображается в JTextArea. Что я делаю не так?

спросил(а) 2016-01-25T10:43:00+03:00 5 лет, 1 месяц назад
1
Решение
74

Похоже, вы никогда не начинаете jTextArea1 (из того, что я вижу). Вы также не используете jTextArea1 в любом месте прослушивателя. Вы можете добавить их и протестировать.

Вы ничего не изменили в этом методе

public JTextArea setTextArea(){
return this.jTextArea1;
}

Этот метод должен включать что-то вроде

jTextArea1.setText("sometext");

РЕДАКТИРОВАТЬ

Например

public class JTreeFiles extends JFrame {

private JTextArea jTextArea1;

public void setText(String text){
jTextArea1.setText(text);
}
}

Тогда вы поместите это в слушателя

tree.addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
// All of your other IF statements
JTreeFiles jf = new JTreeFiles();
jf.setText("Text Here");
jf.repaint();
}
}

ответил(а) 2016-01-25T10:48:00+03:00 5 лет, 1 месяц назад
-4

Попробуйте перерисовать textArea после его обновления:

jf.getTextArea().update(jf.getTextArea().getGraphics());

BTW, в соответствии с условными обозначениями bean-кодов, метод JTreeFiles должен быть getTextArea вместо setTextArea.

ответил(а) 2016-01-25T10:49:00+03:00 5 лет, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема