从另一个类设置JTextArea值

时间:2016-01-25 07:43:56

标签: java swing 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中。我做错了什么?

2 个答案:

答案 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