A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐长智 中级黑马   /  2013-3-5 15:00  /  1420 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. [/size][size=14px]checkbutton.addActionListener(new ActionListener(){[/size]
  2.                         public void actionPerformed(ActionEvent e){
  3.                                 //将lib中的Data文件通过FileReader流读取进缓存
  4.                                 BufferedReader brin = null;
  5.                                 try {
  6.                                         brin = new BufferedReader(new FileReader("lab\\Data.txt"));
  7.                                 } catch (FileNotFoundException e1) {
  8.                                         e1.printStackTrace();
  9.                                 }
  10.                                 //定义HashMap集合。
  11.                                 HashMap<Integer,String> hm = new HashMap<Integer,String>();
  12.                                
  13.                                 String str1 = null;
  14.                                 String str2 = null;
  15.                                 String line = null;
  16.                                
  17.                                 try {
  18.                                         while((line=brin.readLine())!=null){
  19.                                                 String str = line;
  20.                                                 //在文件中,数字期数和所开的班用,隔开,这里用split方法把数据分装到两个数组中。
  21.                                                 String[] arr = str.split(",");
  22.                                                 str1 = arr[0];
  23.                                                 str2 = arr[1];
  24.                                                 //将数据以键值对的形式存入集合中
  25.                                                 hm.put(Integer.parseInt(str1), str2);
  26.                                         }
  27.                                 } catch (IOException e1) {
  28.                                         e1.printStackTrace();
  29.                                 }
  30.                                
  31.                                 //得到输入框中输入的字符串。
  32.                                 String getstring = txtin.getText();
  33.                                 //查找键中是否有输入的字符串
  34.                                 if(hm.containsKey(Integer.parseInt(getstring))){
  35.                                         //在显示框中显示查询的值
  36.                                         tashow.setText(hm.get(getstring));
  37.                                        
  38.                                 }
  39.                                
  40.                                 else{
  41.                                         String info = "不是正确的学期数,请重输";
  42.                                         //dialog弹出,并赋予提示信息
  43.                                         lab.setText(info);
  44.                                         txtin.setText("");
  45.                                         d.setVisible(true);
  46.                                 }
  47.                         }
  48.                 });
  49.                
  50.                 txtin.addActionListener(new ActionListener(){
  51.                         public void actionPerformed(ActionEvent e) {
  52.                                 //将lib中的Data文件通过FileReader流读取进缓存
  53.                                 BufferedReader brin = null;
  54.                                 try {
  55.                                         brin = new BufferedReader(new FileReader("lab\\Data.txt"));
  56.                                 } catch (FileNotFoundException e1) {
  57.                                         e1.printStackTrace();
  58.                                 }
  59.                                 //定义HashMap集合。
  60.                                 HashMap<String,String> hm = new HashMap<String,String>();
  61.                                
  62.                                 String str1 = null;
  63.                                 String str2 = null;
  64.                                 String line = null;
  65.                                
  66.                                 try {
  67.                                         while((line=brin.readLine())!=null){
  68.                                                 String str = line;
  69.                                                 //在文件中,数字期数和所开的班用,隔开,这里用split方法把数据分装到两个数组中。
  70.                                                 String[] arr = str.split(",");
  71.                                                 str1 = arr[0];
  72.                                                 str2 = arr[1];
  73.                                                 //将数据以键值对的形式存入集合中
  74.                                                 hm.put(str1, str2);
  75.                                         }
  76.                                 } catch (IOException e1) {
  77.                                         e1.printStackTrace();
  78.                                 }
  79.                                
  80.                                 //得到输入框中输入的字符串。
  81.                                 String getstring = txtin.getText();
  82.                                 //查找键中是否有输入的字符串
  83.                                 if(hm.containsKey(getstring)){
  84.                                         //在显示框中显示查询的值
  85.                                        
  86.                                         tashow.setText(hm.get(getstring));
  87.                                 }
  88.                                
  89.                                 else{
  90.                                         String info = "不是正确的学期数,请重输";
  91.                                         //dialog弹出,并赋予提示信息
  92.                                         lab.setText(info);
  93.                                         txtin.setText("");
  94.                                         d.setVisible(true);
  95.                                 }
  96.                         }
  97.                        
  98.                 });
  99.                
  100. [size=14px]        [/size][size=14px]}[/size]
复制代码
这是一道论坛里涛哥出的题目,相信明眼人看出来了,
问题是:我在这个代码中实现了两个监听,一个是button按钮的监听,还有一个是输入框回车的监听,但是两个监听动作中的代码是一模一样的,
浪费了资源,如何把监听其中的代码剥离出来,抽成方法,让两个监听器都能使用呢?
ps:金币还带税的,发帖要谨慎啊

评分

参与人数 1黑马币 +9 收起 理由
黄玉昆 + 9 赞一个!

查看全部评分

2 个回复

倒序浏览

回帖奖励 +4

这个得好好看看~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马