Java 未检索JTextArea的文本?
我想从同一个包中的另一个类获取private access 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) {
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