如何实现两个窗口间传递数据并显示(jbuilder环境下)

hswfly 2007-03-25 02:48:10
我在做一个从习题数据库中查询题目的小程序,要求它在用户运行后出现主面板(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:个人感觉没有指针用真是很痛苦(貌似可以传递对象的引用)......


...全文
270 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hswfly 2007-03-27
  • 打赏
  • 举报
回复
首先感谢各位的回答,我们昨天已经解决了这个问题,大体上用的zhanghao85()的方法,只不过略做修改,使得this.previous可以控制Frame1里的任何方法和变量了,只不过我们的方法不是很安全,感觉上shengli_liao(我是谁?) 的方法更好一些,大概学了javabean会有更合适的方法吧,分数立即兑现。
shengli_liao 2007-03-27
  • 打赏
  • 举报
回复
采用模态对话框

JDialog frame2 = new JDialog(frame1,"frame2",true);
frame2 .show();//线程阻塞,当frame2点确定或退出按钮后自动关闭并执行后面的语句
if(frame2被点确定按钮){
frame1.gouShi = frame2.getGouShi();
}

xunmi12 2007-03-26
  • 打赏
  • 举报
回复
其实你根据自己想要操作的对象的数量传,比如就一个textarea你就可以直接把他传过去 ,然后setText就可以了~ 如果多的话 你把this整个传过去,然后一个一个的取属性 或者方法用
「已注销」 2007-03-26
  • 打赏
  • 举报
回复
自己写一个事件监听器,用事件传递
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);
}
frilly 2007-03-26
  • 打赏
  • 举报
回复
Frame1的实例有一个jTextArea 设置为static 
Frame2 里,直接通过 Frame1.text.setText();

方法比较不安全,嘿嘿
hswfly 2007-03-25
  • 打赏
  • 举报
回复
问题还没有解决 to zhanghao85() ( )
现在已经可以通过使用this.previous.(加方法)来对Frame1的实例进行操作,但似乎还不能操作自己定义的任何成员变量,方法,以及类变量,方法。比如原来Frame1的实例有一个jTextArea组件,现在应怎样把查询结果直接输出到jTextArea上呢?


to lixiaoxue85(蛮野蛮)
如果是jdialog的话具体怎样用呢?我也想过可惜没有办法。javabean我们还没学过。
lixiaoxue85 2007-03-25
  • 打赏
  • 举报
回复
用JDIALOG试试,或者用BEAN的SET或GET方法
zhanghao85 2007-03-25
  • 打赏
  • 举报
回复
可以把Frame1类的this传递给
在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
应该可以吧
hswfly 2007-03-25
  • 打赏
  • 举报
回复
抱歉写错了,下面的类应该是Frame2。
1.1 Java语言发展简史2 1.2 认识Java语言3 1.2.1 Java语言特性3 1.2.2 JavaApplet4 1.2.3 丰富的类库4 1.2.4 Java的竞争对手5 1.2.5 Java在应用领域的优势7 1.3 Java平台的体系结构7 1.3.1 JavaSE标准版8 1.3.2 JavaEE企业版10 1.3.3 JavaME微型版11 1.4 JavaSE环境安装和配置12 1.4.1 什么是JDK12 1.4.2 JDK安装目录和实用命令工具介绍12 1.4.3 设置环境变量13 1.4.4 验证配置的正确性14 1.5 MyEcilpse工具介绍JavaSE环境安装和配置15 1.6 本章练习16 第2章 2.1 什么是程序18 2.2 计算机中的程序18 2.3 Java程序19 2.3.1 Java程序中的类型19 2.3.2 Java程序开发三步曲21 2.3.3 开发Java第一个程序21 2.3.4 Java代码中的注释23 2.3.5 常见错误解析24 2.4 Java类库组织结构和文档27 2.5 Java虚拟机简介28 2.6 Java技术两种核心运行机制29 2.7 上机练习30 第3章 3.1 变量32 3.1.1 什么是变量32 3.1.2 为什么需要变量32 3.1.3 变量的声明和赋值33 3.1.4 变量应用实例33 3.2 数据的分类34 3.2.1 Java中的八种基本数据类型34 3.2.2 普及二进制36 3.2.3 进制转换37 3.2.4 基本数据类型转换38 3.2.5 数据类型应用实例38 3.2.6 引用数据类型39 3.3 关键字.标识符.常量39 3.3.1 变量命名规范39 3.3.2 经验之谈-常见错误的分析与处理40 3.3.3 Java标识符命名规则41 3.3.4 关键字42 3.3.5 常量42 3.4 运算符43 3.4.1 算术运算符43 3.4.2 赋值操作符45 3.4.3 关系操作符47 3.4.4 逻辑操作符48 3.4.5 位操作符49 3.4.6 移位运算符49 3.4.7 其他操作符50 3.5 表达式52 3.5.1 表达式简介52 3.5.2 表达式的类型和值52 3.5.3 表达式的运算顺序52 3.5.4 优先级和结合性问题52 3.6 选择结构54 3.6.1 顺序语句54 3.6.2 选择条件语句54 3.6.3 switch结构59 3.6.4 经验之谈-常见错误的分析与处理65 3.6.5 Switch和多重if结构比较66 3.7 循环语句66 3.7.1 While循环67 3.7.2 经验之谈-常见while错误70 3.7.3 do-while循环72 3.7.4 for循环74 3.7.5 经验之谈-for常见错误76 3.7.6 循环语句小结78 3.7.7 break语句79 3.7.8 continue语句82 3.8 JavaDebug技术84 3.9 本章练习85 第4章 4.1 一维数组90 4.1.1 为什么要使用数组90 4.1.2 什么是数组91 4.1.3 如何使用数组92 4.1.4 经验之谈-数组常见错误97 4.2 常用算法98 4.2.1 平均值,最大值,最小值98 4.2.3 数组排序102 4.2.3 数组复制103 4.3 多维数组105 4.3.1 二重循环105 4.3.2 控制流程进阶107 4.3.3 二维数组111 4.4 经典算法113 4.4.1 算法-冒泡排序113 4.4.2 插入排序115 4.5 增强for循环116 4.6 本章练习117 第5章 5.1 面向过程的设计思想120 5.2 面向对象的设计思想120 5.3 抽象121 5.3.1 对象的理解121 5.3.2 Java抽象思想的实现122 5.4 封装124 5.4.1 对象封装的概念理解124 5.4.2 类的理解125 5.4.3 Java类模板创建125 5.4.4 Java中对象的创建和使用127 5.5 属性130 5.5.1 属性的定义130 5.5.2 变量131 5.6 方法132 5.6.1 方法的定义132 5.6.2 构造方法135 5.6.4 方法重载138 5.6.5 自定义方法138 5.6.6 系统提供方法139 5.6.7 方法调用140 5.6.8 方法参数及其传递问题144 5.6.9 理解main方法语法及命令行参数147 5.6.1 0递归算法147 5.7 this关键字148 5.8 JavaBean149 5.9 包150 5.9.1 为什么需要包?150 5.9.2 如何创建包151 5.9.3 编译并生成包:151

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧