没有检索到JTextArea的文本?

时间:2015-05-01 10:39:00

标签: java

我想从同一个包中的另一个类获取私有访问JTextArea的文本,并将文本存储/保存到String中。

public class JTextAreaDemo extends javax.swing.JFrame {

 public JTextAreaDemo() {
    initComponents();
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    TxtArea_Class d = new TxtArea_Class();
    d.readJtxtAreaText();


}

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new JTextAreaDemo().setVisible(true);
        }
    });
}
private javax.swing.JTextArea jTextArea1;  

 /**
 * @return the jTextArea1
 */
 public String getjTextArea1() {
    return jTextArea1.getText();
}

/**
 * @param jTextArea1 the jTextArea1 to set
 */
public void setjTextArea1(javax.swing.JTextArea jTextArea1) {
    this.jTextArea1 = jTextArea1;
}

现在我想将JTextArea的文本保存到下面的类

中的字符串
public class TxtArea_Class {

JTextAreaDemo demo;
String txt;

public TxtArea_Class(){

   demo = new JTextAreaDemo(); 
   txt = new String();
}

public void readJtxtAreaText(){

    txt = demo.getjTextArea1();

    if(txt.isEmpty()){

        System.out.println("Failed To Get TextArea Contents ");
    }
    else{

        System.out.println("Successfully Get TextArea Contents ");

    }


}

控制台输出:

Failed to Get TextArea Contents

2 个答案:

答案 0 :(得分:1)

问题出在您的TextArea_Calss's构造函数

尝试以下方法。

public TextArea_class(TextAreaDemo demo) {
  this.demo = demo;
  this.str = new String();
}

并在按钮事件中。做这个。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    TxtArea_Class d = new TxtArea_Class(this);
    d.readJtxtAreaText();


}

在当前实现中,每次创建TextArea-calss的实例时,都会创建一个新框架。因为在TextArea_Class构造函数中,您正在创建一个新的demo类实例。 而你正试图从新创建的demoFrame中获取价值(可能对你来说是隐形的但存在)。

我希望这能解决您的问题。

答案 1 :(得分:1)

你有两个不同的JTextAreaDemo实例!一个在main中创建并且可见,另一个在TxtArea_Class中创建。第一个是屏幕上的那个,第二个是你从中读取字符串的那个。因此,您输入第一个文本的文本不会显示在第二个文本中。