我刚学java,所以才遇到这种问题
我用jbuilder建立了一个gui的应用程序,其中有2个java文件Application1.java和Frame1.java
我在Frame1.java上添加了一个按钮和一个文本框。并给按钮加了一个事件监听器
然后添加了一个新的类,在单独的一个文件上test.java(它们在同一个包中)
--------------------------------
package untitled1;public class test {
public void test1 (){
Frame1 gettext = new Frame1() ;
gettext.jTextArea2.setText("1111");
}
}
--------------------------------然后在Frame1上的按钮写了一个单击的事件--------------------------------
public void jButton1_actionPerformed(ActionEvent e)
{ try{ test aaaa = new test();
aaaa.test1() ;
}
catch(Exception e1){}
}
----------------------------------------------------------------
理论上在单击按钮后,会创建一个test的实例对象,然后调用实例对象的test1方法
在文本框中输出“1111”的字符串,但结果没有我开始以为是按钮的单击事件有问题,我就直接在单击事件中jTextArea2.setText("1111");
结果正常显示“1111”偶想了半天也不知道是哪里错误
请高人指点
我用jbuilder建立了一个gui的应用程序,其中有2个java文件Application1.java和Frame1.java
我在Frame1.java上添加了一个按钮和一个文本框。并给按钮加了一个事件监听器
然后添加了一个新的类,在单独的一个文件上test.java(它们在同一个包中)
--------------------------------
package untitled1;public class test {
public void test1 (){
Frame1 gettext = new Frame1() ;
gettext.jTextArea2.setText("1111");
}
}
--------------------------------然后在Frame1上的按钮写了一个单击的事件--------------------------------
public void jButton1_actionPerformed(ActionEvent e)
{ try{ test aaaa = new test();
aaaa.test1() ;
}
catch(Exception e1){}
}
----------------------------------------------------------------
理论上在单击按钮后,会创建一个test的实例对象,然后调用实例对象的test1方法
在文本框中输出“1111”的字符串,但结果没有我开始以为是按钮的单击事件有问题,我就直接在单击事件中jTextArea2.setText("1111");
结果正常显示“1111”偶想了半天也不知道是哪里错误
请高人指点
-------gettext是什么????
//test.java
package untitled1;public class test {
public void test1 (JTextArea JTA_txt){
JTA_txt.setText("1111");
}
}
//frame1.java
........
public void jButton1_actionPerformed(ActionEvent e)
{ try{ test aaaa = new test();
aaaa.test1(jTextArea2) ;
}
catch(Exception e1){}
}..........
----------------------------------------------------------
首先,test类是为frame1类服务的,它的test1是处理对frame1类中的jTextArea2的赋值内容的
其次,在点击事件中建立test的实例对象aaaa时,Frame1类已经存在,所以在test类中的test1方法中不能再建立frame1类的实例对象,这样会调用一个空的对象。而你想调用的Frame1类已经在内存中存在了,所以要想达到你的意图,见以下代码,当然我上面的代码也是可行的。//test.java
package untitled1;public class test {
public void test1 (){
Frame1.getInstance().jTextArea2.setText("1111");
//Frame1是类名,不能直接用Frame1调用它的子民(如公共方法和变量)
}
}
//frame1.java
public static Frame1 instance = new Frame1();
........
public Frame1(){ //构造函数
instance = this; //在构造函数中得到本类的实例
}
public static Frame1 getInstance(){
return instance;
}
public void jButton1_actionPerformed(ActionEvent e)
{ try{ test aaaa = new test();
aaaa.test1() ;
}
catch(Exception e1){}
}
}
.......... ------罗毅