Задайте значение JTextArea из другого класса
Мой вопрос 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
. Что я делаю не так?
Похоже, вы никогда не начинаете 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();
}
}
Попробуйте перерисовать textArea после его обновления:
jf.getTextArea().update(jf.getTextArea().getGraphics());
BTW, в соответствии с условными обозначениями bean-кодов, метод JTreeFiles должен быть getTextArea
вместо setTextArea
.