| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 448 人关注过本帖
标题:求高手指点事件的相关问题
只看楼主 加入收藏
skylm1234
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-16
结帖率:66.67%
收藏
已结贴  问题点数:5 回复次数:4 
求高手指点事件的相关问题
我设置了3个TextField,,目的是在TextField1输入的数显示在TextField3中,输入一个它就自动显示一个饿,输2个它显示2个,就是这样的,请问怎么处理呀,我先是监听的TextField1,但如果把这些数转到TextField3中呀。。谢谢了,可能问题问得不是很完整。。
要求是,在TextField1中输入数字,在TextField3中显示你输入的数字,当在TextField2中输入数字时,TextField3中自动显示TextField1和TextField2的和,也就是做加法运算,拜托各位了!!!
但是我始终做不到让它同步。。初学JAVA,还望高手指点呀。。
下面是我的源代码,请问应该怎么修改才能达到效果呢,谢谢!代码有点杂乱。。。
import java.awt.*;
import java.awt.event.*;

public class TextCounter {
    public static void main (String args[]) {
        new CounterFrame().lauchFrame();
    }
}

class CounterFrame extends Frame {
    TextField text1,text2,text3;
    public void lauchFrame() {
         text1 =new TextField ("0",10);
         text2 =new TextField ("0",10);
         text3 =new TextField ("0",10);
         text3.setEditable(false);
        Label label1 = new Label("+");
        Label label2 = new Label("=");
        setLayout(new FlowLayout(FlowLayout.LEFT));
        setLocation(300,400);
        setSize(400,300);
        setBackground(Color.red);
        text1.addFocusListener(new CounterFocusListener());
        text2.addFocusListener(new CounterFocusListener1());
        //text2.addFocusListener(new CounterFocusListener());
        //text2.add(new CounterFocusListener());
        text3.addKeyListener(new CounterKeyAdapter());
        //setDefaultCloseOperation(Frame.EXIT_ON_CLOSE);
        add(text1);
        add(label1);
        add(text2);
        add(label2);
        add(text3);
        setVisible(true);
    }
    class CounterFocusListener implements FocusListener{
        public void focusGained(FocusEvent e) {
            //text3.setFocusable(true);
            int num1 = Integer.parseInt(text1.getText());
            int num2 = Integer.parseInt(text2.getText());
            text3.setText(""+ (num1 + num2));
        }
        
        public void focusLost(FocusEvent e) {
            //text3.setFocusable(true);
            int num1 = Integer.parseInt(text1.getText());
            int num2 = Integer.parseInt(text2.getText());
            text3.setText(""+ (num1 + num2));
        }
    }
    class CounterFocusListener1 implements FocusListener{
        public void focusGained(FocusEvent e) {
            //text3.setFocusable(true);
            int num1 = Integer.parseInt(text1.getText());
            int num2 = Integer.parseInt(text2.getText());
            text3.setText(""+ (num1 + num2));
        }
        
        public void focusLost(FocusEvent e) {
            //text3.setFocusable(true);
            int num1 = Integer.parseInt(text1.getText());
            int num2 = Integer.parseInt(text2.getText());
            text3.setText(""+ (num1 + num2));
        }
    }
    class CounterKeyAdapter extends KeyAdapter {
        public void keyTyped (KeyEvent e) {
            //text3.setText(text1.getText());
            //text3.setFocusable(true);
            text3.setText("" + e.getKeyChar());
        }
    }
   
}
2010-10-29 09:43
ghjsmzy
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:187
专家分:573
注 册:2009-6-17
收藏
得分:0 
你这个没错啊!要是像你说的在 2 里输完了就传到 3 ,可是你要想,计算机它怎么知道你输完了没有啊,所以做完输入还是要你自己退出 2 或者说回车的它才把结果传到 3 了。要是想要你说的那样输完了,让它自己完成+法也是可以的,就是你设置一个时间,比如说过了3秒,你就让它自动+了,可是这样不是更不好用了吗!
2010-10-29 10:12
jackieli2074
Rank: 6Rank: 6
来 自:上海
等 级:侠之大者
威 望:1
帖 子:183
专家分:494
注 册:2010-8-3
收藏
得分:0 
你的很多Listener没什么用处啊! 我用你的代码加了一个TextListener可以实现你说的功能。
程序代码:
package testText;

import java.awt.*;
import java.awt.event.*;


class CounterFrame extends Frame {
    TextField text1,text2,text3;
    public void lauchFrame() {
         text1 =new TextField ("0",10);
         text2 =new TextField ("0",10);
         text3 =new TextField ("0",10);
         text3.setFocusable(false);
        Label label1 = new Label("+");
        Label label2 = new Label("=");
        setLayout(new FlowLayout(FlowLayout.LEFT));
        setLocation(300,400);
        setSize(400,300);
        setBackground(Color.cyan);
        text1.addFocusListener(new CounterFocusListener());
        text2.addFocusListener(new CounterFocusListener());
  //      text3.addFocusListener(new CounterFocusListener()); 

        text3.addTextListener(new textLister());
     

        add(text1);
        add(label1);
        add(text2);
        add(label2);
        add(text3);
        setVisible(true);
    }
    class CounterFocusListener implements FocusListener{
        public void focusGained(FocusEvent e) {
            //text3.setFocusable(true);
            int num1 = Integer.parseInt(text1.getText());
            int num2 = Integer.parseInt(text2.getText());
            text3.setText(""+ (num1 + num2));
           

        }
       

        public void focusLost(FocusEvent e) {
            //text3.setFocusable(true);
            int num1 = Integer.parseInt(text1.getText());
            int num2 = Integer.parseInt(text2.getText());
            text3.setText(""+ (num1 + num2));
        }
    }

     class textLister implements TextListener {

        @Override
        public void textValueChanged(TextEvent e) {
            text3.setFocusable(true);
            int num1 = Integer.parseInt(text1.getText());
            int num2 = Integer.parseInt(text2.getText());
            text3.setText(""+ (num1 + num2));
        }
        

     }
   

} 

2010-10-29 11:15
skylm1234
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-16
收藏
得分:0 
回复 3楼 jackieli2074
你好,请问下为什么我把你的代码加进去就是错误的呢,他说方法未覆盖其父类的方法,就是这个@Override
请问还需要改动吗?
2010-10-29 12:24
jackieli2074
Rank: 6Rank: 6
来 自:上海
等 级:侠之大者
威 望:1
帖 子:183
专家分:494
注 册:2010-8-3
收藏
得分:5 
回复 4楼 skylm1234
这个是应该是因为你用的JDK1.5吧!要么该1.6要么把那一句 @Override删除
2010-10-29 13:52
快速回复:求高手指点事件的相关问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044419 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved