我在做一个从习题数据库中查询题目的小程序,要求它在用户运行后出现主面板(Frame1类的实例),然后用户点击“查询”按钮后创建查询窗口(Frame2类的实例),用户输入查询条件后按“确定”按钮就可以在原面板上显示查询结果。就是这最后一步怎样也完不成,在下初学java,希望大侠指教。
具体代码简写如下:
public class Frame1 extends JFrame implements ActionListener{
......
subMenu4 = new JMenuItem("习题检索");
subMenu4.addActionListener(this);
......
public void actionPerformed(ActionEvent e){
if(e.getSource()==subMenu4){
new Frame2();
}
}
}
public class Frame1 extends JFrame implements ActionListener{
......
jButton1.setText("确定");
jButton1.addActionListener(this)
......
public void actionPerformed(ActionEvent e){
if(e.getSource()==jButton1){
//这里应该怎样做才能在原窗口中显示结果,
//而不是新建Frame1实例?
}
}
}
ps:个人感觉没有指针用真是很痛苦(貌似可以传递对象的引用)......
具体代码简写如下:
public class Frame1 extends JFrame implements ActionListener{
......
subMenu4 = new JMenuItem("习题检索");
subMenu4.addActionListener(this);
......
public void actionPerformed(ActionEvent e){
if(e.getSource()==subMenu4){
new Frame2();
}
}
}
public class Frame1 extends JFrame implements ActionListener{
......
jButton1.setText("确定");
jButton1.addActionListener(this)
......
public void actionPerformed(ActionEvent e){
if(e.getSource()==jButton1){
//这里应该怎样做才能在原窗口中显示结果,
//而不是新建Frame1实例?
}
}
}
ps:个人感觉没有指针用真是很痛苦(貌似可以传递对象的引用)......
解决方案 »
- Exceptionjava.net.ConnectException: Connection refused: connect
- java文件操作问题,打锅卖铁了
- 求JFreeChart包
- 求助:JAVA编程思想的一道例题
- 在tomcat中如何指定编译java文件时的encoding
- 用Java开发的性能监控系统设计的疑问,高分请教!
- Java中如何创建一个新文件新目录
- 实现我的诺言,散分,主要回答人如下:wjmmml(笑着悲伤),xmvigour(微电--有狼的气质 没狼的勇气 真郁闷),sharetop(燕赤霞),piggybank(
- 用java开发应用程序,能否形成.exe文件?
- 求助Java归并排序的问题,不知道哪儿出错了,谢谢!
- 数组问题———谢
- 请教 runtime.getruntime().exec(command) 死锁问题(目标是运行长时间执行的后台程序)
在Frame2类中加一个JFrame成员 JFrame previous;
再加一构造函数
void Frame2(JFrame jf){
this.previous = jf;
}Frame1的函数改为
public void actionPerformed(ActionEvent e){
if(e.getSource()==subMenu4){
new Frame2(this);/////////////////////////////
}
}要显示再调用一下previous
应该可以吧
现在已经可以通过使用this.previous.(加方法)来对Frame1的实例进行操作,但似乎还不能操作自己定义的任何成员变量,方法,以及类变量,方法。比如原来Frame1的实例有一个jTextArea组件,现在应怎样把查询结果直接输出到jTextArea上呢?
to lixiaoxue85(蛮野蛮)
如果是jdialog的话具体怎样用呢?我也想过可惜没有办法。javabean我们还没学过。
Frame2 里,直接通过 Frame1.text.setText();方法比较不安全,嘿嘿
public class Frame1 extends JFrame implements ActionListener,DataListener{
public Frame1(){
}
......
subMenu4 = new JMenuItem("习题检索");
subMenu4.addActionListener(this);
......
public void actionPerformed(ActionEvent e){
if(e.getSource()==subMenu4){
new Frame2().addDataListener(this);
}
}
public void receiveData(DataBean bean){
//将bean的数据填入相应字段
}
}
public class Frame2 extends JFrame implements ActionListener{
DataListener listener=null;
......
jButton1.setText("确定");
jButton1.addActionListener(this)
......
public void actionPerformed(ActionEvent e){
if(e.getSource()==jButton1){
//这里应该怎样做才能在原窗口中显示结果,
//而不是新建Frame1实例?
//填充bean数据
DataBean db = DataBean();
//将bean数据发送给监听器
listener.receiveData(bean);
}
}
public void addDataListener(DataListener listener){
this.listener=listener;
}
} public interface DataListener{
public void receiveData(DataBean bean);
}
frame2 .show();//线程阻塞,当frame2点确定或退出按钮后自动关闭并执行后面的语句
if(frame2被点确定按钮){
frame1.gouShi = frame2.getGouShi();
}