• ActionEvent之TextField


    这里我们讲这个TestField类

    也就是我们的输入框,什么输入密码,用户名什么的。

    一些方法:

    这里说到TestField也会有事件发生,就是当你在文本框敲回车的时候。

    看个例子:

    import java.awt.*;
    import java.awt.event.*;
    
    public class TFActionEvent {
        public static void main(String[] args) {
            new TFFrame();
        }
    } 
    
    class TFFrame extends Frame {
        TFFrame() {
            TextField tf = new TextField();//创建一个输入栏
            add(tf);//把这个输入栏加进去
            tf.addActionListener(new TFActionListener());
            pack();
            setVisible(true);    
        }
    }
    
    class TFActionListener implements ActionListener{
        public void actionPerformed(ActionEvent e) {//重写方法
            TextField tf = (TextField)e.getSource();//现在tf是指向同一个对象
            System.out.println(tf.getText());//将输入的内容打印出来
            tf.setText("");//将输入栏重新设为空        
        }
    }

    这里我们这个监听器对象要把frame里面那个的tf给读出来。可是我怎么才能读出来呢?这可是其他类里面的方法的局部变量啊。显然不可能。

    幸好它会把事件的信息传过来。信息会封装到ActionEvent这个对象里面。然后它有一个方法叫做getSource()——叫拿到事件源。但是它拿到事件源之后是把它当作父类来看的。也就是返回一个Object类。所以要加个强制转换。

    然后监听器的tf和TTFrame里的tf在内存里指向的就是同一个对象了。

    如果再在 TFFrame里面加这句    tf.setEchoChar('*');  

    就会变成密码输入栏,这句话是设置设置回显字符。

  • 相关阅读:
    CF446C [DZY loves Fibonacci]
    [BZOJ2286] 消耗战
    [CF Round #278] Tourists
    BZOJ2553 [BJWC2011]禁忌
    NOI2018D2T1 屠龙勇士
    BZOJ2333 棘手的操作
    bzoj4196: [Noi2015]软件包管理器(树链剖分)
    bzoj1833: [ZJOI2010]count 数字计数(数位DP)
    bzoj1026: [SCOI2009]windy数(数位DP)
    bzoj3631: [JLOI2014]松鼠的新家(树上差分)
  • 原文地址:https://www.cnblogs.com/wangshen31/p/6896870.html
Copyright © 2020-2023  润新知