怎么把 一个方法中的JTextField 局部变量传递到下一个方法进行修改 条件是:不用全局变量!!!

yanjingrong 2011-08-30 05:32:11

例如:

public HashMap fy_tw(){
JFrame f=new JFrame("调温费和取暖费明细查询");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(400, 200);
f.setResizable(false);
f.setLocationRelativeTo(null);

JPanel p1=new JPanel();

JLabel l_zyh=new JLabel("住院号");

JTextField t_zyh=new JTextField();
t_zyh.setPreferredSize(new Dimension(200,30));

JButton btn=new JButton("查询");
btn.setPreferredSize(new Dimension(100,30));
btn.addActionListener(query); //// !!!!!!!这个监听中我想获取JTextField 的 内容

JLabel l_qnf=new JLabel(" 取暖费");
JLabel l_qnfx=new JLabel();
l_qnfx.setPreferredSize(new Dimension(300,30));

JLabel l_twf=new JLabel("调温费");
JLabel l_twfx=new JLabel();
l_twfx.setPreferredSize(new Dimension(300,30));

p1.add(l_zyh);
p1.add(t_zyh);
p1.add(btn);
p1.add(l_qnf);
p1.add(l_qnfx);
p1.add(l_twf);
p1.add(l_twfx);

f.add(p1);
f.setVisible(true);

HashMap map=new HashMap();
map.put("t_zyh", t_zyh); //已测试用HashMap 传过去 就不是这个方法中定义的 //JTextField 了,怎么才能把它传递到下一个监听方法??

return map;

}

static ActionListener query = new ActionListener() {

public void actionPerformed(ActionEvent ae) {
try {
Gui gui=new Gui();
HashMap map=gui.fy_tw();
JTextField tt=map.get("zyh");
System.out.println(tt.getText());//这个为空,说明传送失败!!!


JLabel l1=(JLabel) gui.fy_tw().get("l_zyh");


HashMap map=gui.fy_tw();
JTextField t_zyh=(JTextField) map.get("t_zyh");




// Class c = gui.getClass();
Method xxx=c.getMethod("fy_tw", null);
// JTextField xxx=xxx.




Connection conn=DButil.getConn();
Statement stat=conn.createStatement();

String sql1="select sum(zjje) qnf from zy_ls_sfd2 where sflb='6100' and zyh='"+t_zyh.getText()+"'";
String sql2="select sum(zjje) twf from zy_ls_sfd2 where sflb='6200' and zyh='"+t_zyh.getText()+"'";

ResultSet rs1=stat.executeQuery(sql1);
rs1.next();
String qnf=rs1.getString("qnf");
JTextField l_qnfx=(JTextField) map.get("l_qnfx");
l_qnfx.setText(qnf);

ResultSet rs2=stat.executeQuery(sql2);
rs2.next();
String twf=rs1.getString("twf");
JTextField l_twfx=(JTextField) map.get("l_twfx");
l_twfx.setText(twf);

conn.close();

} catch (Exception e) {
e.printStackTrace();
}
}
};

请问大虾,这个问题怎么解决,就是说怎么把 一个方法中的JTextField 局部变量传递到下一个方法进行修改
条件是:不用全局变量!!!
...全文
170 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanjingrong 2011-08-30
  • 打赏
  • 举报
回复
谢谢,结贴了!
之所以提出这个问题是因为 一大堆成员变量定义在类前面,这些变量在各个方法中出现,显得逻辑比较乱,还要找来找去。
阳明 to life 2011-08-30
  • 打赏
  • 举报
回复
不会再有方法了。。。你不用成员变量的话,将textfiled作为局部变量,你类里面要访问只能将类和textfiled放置在同一方法体内,这种情况想复用。。。那就用成员变量,用成员变量不会扣你钱的 放心
yanjingrong 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhouyuqwert 的回复:]

.....
那你把匿名类写到方法体里面吧,把textfield设置为final
[/Quote]

这个方法是可以的,唯一的缺点匿名类复用差一点,当然也不是所有东西都要准备复用,谢谢楼上!

不知道还有什么方法么?
阳明 to life 2011-08-30
  • 打赏
  • 举报
回复
.....
那你把匿名类写到方法体里面吧,把textfield设置为final
yanjingrong 2011-08-30
  • 打赏
  • 举报
回复
DButil 只是产生一个数据库连接

构造函数是不行的,因为我的要求是不用 全局变量,而构造方法是初始化全局变量的
打油的程序员 2011-08-30
  • 打赏
  • 举报
回复
你把这两个类的所有代码都贴出来,,不要省掉任何东西,包括类名
class Gui

class DButil
打油的程序员 2011-08-30
  • 打赏
  • 举报
回复
你把这个类的所有代码都贴出来,,不要省掉任何东西,包括类名
class Gui

class DButil
阳明 to life 2011-08-30
  • 打赏
  • 举报
回复
那就不要用匿名了。。。构造函数带个参数传进去就行了
yanjingrong 2011-08-30
  • 打赏
  • 举报
回复
没人知道么???
yanjingrong 2011-08-30
  • 打赏
  • 举报
回复
写的不好请不吝赐教,向各位学习了
NewMoons 2011-08-30
  • 打赏
  • 举报
回复
首先纠正一下,java中没有全局变量的概念。
代码实在太无语了,不评论了,希望楼下能给出好的建议。
yanjingrong 2011-08-30
  • 打赏
  • 举报
回复
谁知道,小弟在此等候了

62,614

社区成员

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

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