2016-01-25 43 views
0

我的问题是:我如何设置另一个类的JTextArea的值?这是一个包含了JTextArea并延伸JFrame类:设置另一个类的JTextArea值

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

它看起来像你从来没有启动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(); 
    } 
} 
+0

是在刚刚调用jTextAarea的方法中,然后将用于在另一个类中设置文本。你能给我关于你的建议的完整代码吗? –

+0

为什么大家在设置文本后调用repaint()?这不会解决问题 - – Stephan

+0

人们正在使用重绘,因为它可能是一个问题。我遇到了JComponents未正确绘制的问题,可以通过重绘进行修复。无论如何,尝试每个选项总是很好的。 –

-1

尝试更新之后重新绘制textarea的:BTW

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

,根据豆代码公约,JTreeFiles方法应该是getTextArea代替的setTextArea

+0

找不到符号:getTextArea,代码应放置在哪里? –

+0

这不是问题,显然是引用了JTextArea实例。它只是被创造和遗忘。 – Stephan

+0

@Stephan True!通常,最明显的错误是不被注意的:-) – Mario

相关问题