Java 未检索JTextArea的文本?

Java 未检索JTextArea的文本?,java,Java,我想从同一个包中的另一个类获取private access JTextArea的文本,并将文本存储/保存到字符串中 public class JTextAreaDemo extends javax.swing.JFrame { public JTextAreaDemo() { initComponents(); } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

我想从同一个包中的另一个类获取private access JTextArea的文本,并将文本存储/保存到字符串中

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的文本保存为string

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

问题出在
TextArea\u cals的
构造函数中

尝试以下方法

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();


}
在当前的实现中,每次创建
textareacalss
的实例时,都会创建一个新的框架。因为在TextArea_类构造函数中,您正在创建演示类的新实例。 您正试图从新创建的demoFrame(对您来说可能是不可见的,但存在的)中获取价值


我希望这能解决你的问题

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

通过此更新代码,我从另一个类中获得了JTxtArea的内容

TextArea\u类

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

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

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


}   

无法从类外部访问私有成员。甚至不是派生类/子类。我已经阅读了关于这个问题的早期帖子,但是jtxtarea是公共的。我专注于与setter和getter一起工作,但它们不适合我。这里的问题不是私有访问器。如果(txt.isEmpty())
将始终返回true,因为您没有在任何位置设置文本,并且文本是空字符串“”。在
jtextrademo
中,提供一个
getter
,它返回一个
字符串,在此getter中,只要从
JTextArea
返回
getText
方法的结果,就可以通过getter和setter访问私有成员。最好提供一个访问器来获取文本,而不是公开一个组件(或任何类字段)为了防止可能的误用,我正在使用拖放gui,因此当我拖放JTextArea时,它默认获得了不可编辑的私有访问权限,因此如何将访问修饰符更改为public。@NuamanJamil这与访问修饰符无关!读答案!您有两个版本的JTextAreaDemo。是的,我稍后查看了他的代码:)实际上他也需要更改他的问题P