我想从同一个包中的另一个类获取私有访问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
答案 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中创建。第一个是屏幕上的那个,第二个是你从中读取字符串的那个。因此,您输入第一个文本的文本不会显示在第二个文本中。