我的问题是:如何从另一个类中设置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
中。我做错了什么?
答案 0 :(得分:0)
看起来你永远不会初始化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();
}
}
答案 1 :(得分:-1)
尝试在更新后重绘textArea:
jf.getTextArea().update(jf.getTextArea().getGraphics());
BTW,根据bean的代码约定,JTreeFiles方法应该是getTextArea
而不是setTextArea
。