Java: Как да направя onclick за TextField?

Искам да накарам моето текстово поле да изчиства текста, когато някой щракне върху него. Как мога да направя това?


person Strawberry    schedule 01.12.2010    source източник
comment
Това java JTextField ли е?   -  person Buhake Sindi    schedule 01.12.2010


Отговори (3)


на 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) {

    }

});

Причината е, че java.awt.TextField е подклас на java.awt.TextComponent (който от своя страна е подклас на java.awt.Component). Класът Component има метод addMouseListener().

Като алтернатива можете да замените MouseListener с java.awt.event.MouseAdapter, ако капсулира всички MouseListener, MouseWheelListener и MouseMotionListener методи.

От JavaDoc (от MouseAdapter):

Абстрактен адаптерен клас за получаване на събития от мишката. Методите в този клас са празни. Този клас съществува като удобство за създаване на слушателски обекти.

Събитията с мишката ви позволяват да проследявате кога мишката е натисната, отпусната, щракната, преместена, плъзгана, кога влиза в компонент, кога излиза и кога колелцето на мишката се движи.

person Buhake Sindi    schedule 01.12.2010
comment
Въпреки че използвам само MousePressed, защо eclipse ме кара да имам празни функции за всички останали? - person Strawberry; 01.12.2010
comment
@Doug, защото имплементираш интерфейс, а не абстрактен клас. Ако искате само mousePressed, използвайте MouseAdapter вместо това. - person Buhake Sindi; 01.12.2010

@gbn Използвам потребителско име, което създадох: rw_user
person Stan Kurilin    schedule 01.12.2010
comment
Бихте ли могли да напишете отговорите си на последователен английски? - person ; 01.12.2010
comment
@Glenn Nelson, съжалявам. Опитвам се. Ще бъде страхотно, ако ми разкажете за грешките ми. - person Stan Kurilin; 01.12.2010
comment
@Stas, значи се отмени... сега разбирам. - person Buhake Sindi; 01.12.2010

Опитайте това:

  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);
  }
person Mohamed Saligh    schedule 01.12.2010
comment
Тук не съм сигурен: focusGained(FocusEvent) не се ли задейства винаги, когато Component получи фокус, т.е. когато alt+tab към вашия JFrame? - person Przemek Kryger; 01.12.2010