Java:如何为 TextField 执行“onclick”?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/4323773/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-30 05:51:42  来源:igfitidea点击:

Java: How do I do a "onclick" for TextField?

javaawt

提问by Strawberry

I want to make my text field clear the text when someone clicks it. How can I do this?

我想让我的文本字段在有人单击时清除文本。我怎样才能做到这一点?

回答by Buhake Sindi

on java.awt.TextFieldyou can add a MouseListenerlike 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.TextFieldis a subclass of java.awt.TextComponent(which, in turn, is a subclass of java.awt.Component). The Componentclass has a addMouseListener()method.

原因是它java.awt.TextField是 的子类java.awt.TextComponent(反过来又是 的子类java.awt.Component)。这个Component类有一个addMouseListener()方法。

Alternatively, you can replace MouseListenerwith java.awt.event.MouseAdapterhas it encapsulates all of MouseListener, MouseWheelListenerand MouseMotionListenermethods.

或者,您可以替换MouseListenerjava.awt.event.MouseAdapterhas it 封装了所有MouseListener,MouseWheelListenerMouseMotionListener方法。

From JavaDoc (of MouseAdapter):

来自 JavaDoc(的MouseAdapter):

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.

用于接收鼠标事件的抽象适配器类。这个类中的方法是空的。此类的存在是为了方便创建侦听器对象。

鼠标事件让您可以跟踪鼠标何时按下、释放、单击、移动、拖动、何时进入组件、何时退出以及何时移动鼠标滚轮。

回答by Stan Kurilin

Probably, you need addMouseListener().

可能,你需要addMouseListener().

updIt would be smt like

upd就像 smt

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

upd2 fix keyListener to MouseListener

upd2 将 keyListener 修复为 MouseListener

回答by Mohamed Saligh

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);
  }