简体   繁体   English

Java:如何为TextField做“ onclick”操作?

[英]Java: How do I do a “onclick” for TextField?

I want to make my text field clear the text when someone clicks it. 我想让我的文本字段在有人单击时清除文本。 How can I do this? 我怎样才能做到这一点?

on java.awt.TextField you can add a MouseListener like so java.awt.TextField您可以像这样添加一个MouseListener

TextField field = new TextField();
field.addMouseListener(new MouseListener() {

    public void mouseClicked(MouseEvent e) {

    }

    public void mousePressed(MouseEvent e) {

    }

    public void mouseReleased(MouseEvent e) {

    }

    public void mouseEntered(MouseEvent e) {

    }

    public void mouseExited(MouseEvent e) {

    }

});

The reason being that java.awt.TextField is a subclass of java.awt.TextComponent (which, in turn, is a subclass of java.awt.Component ). 原因是, java.awt.TextField是的一个子类java.awt.TextComponent (这,反过来,是的一个子类java.awt.Component )。 The Component class has a addMouseListener() method. Component类具有addMouseListener()方法。

Alternatively, you can replace MouseListener with java.awt.event.MouseAdapter has it encapsulates all of MouseListener , MouseWheelListener and MouseMotionListener methods. 或者,您可以将java.awt.event.MouseAdapter替换为MouseListener ,因为它封装了所有MouseListenerMouseWheelListenerMouseMotionListener方法。

From JavaDoc (of MouseAdapter ): 从( MouseAdapter )JavaDoc:

An abstract adapter class for receiving mouse events. 用于接收鼠标事件的抽象适配器类。 The methods in this class are empty. 此类中的方法为空。 This class exists as convenience for creating listener objects. 此类的存在是为了方便创建侦听器对象。

Mouse events let you track when a mouse is pressed, released, clicked, moved, dragged, when it enters a component, when it exits and when a mouse wheel is moved. 鼠标事件可让您跟踪何时按下,释放,单击,移动,拖动鼠标,何时进入组件,何时退出以及何时移动鼠标滚轮。

Probably, you need addMouseListener() . 可能需要addMouseListener()

upd It would be smt like upd这会像

TextField a = ...;
  a.addMouseListener(new MouseAdapter(){
   public void mouseReleased(MouseEvent e) {
    //some stuff
   }
});

upd2 fix keyListener to MouseListener upd2将keyListener修复为MouseListener

Try this: 尝试这个:

  TextField.setText("defaultText");

    TextField.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseClicked(java.awt.event.MouseEvent evt) {
            reSet(evt);
        }
    });

  TextField.addFocusListener(new java.awt.event.FocusAdapter() {
        public void focusGained(java.awt.event.FocusEvent evt) {
            reSet(evt);
        }
  });

  void reSet(java.awt.event.KeyEvent evt) {
      String temp = jTextField1.getText();
      TextField.setText(temp.equals("defaultText")? "" : temp);
  }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM