Искам да накарам моето текстово поле да изчиства текста, когато някой щракне върху него. Как мога да направя това?
Java: Как да направя onclick за TextField?
Отговори (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
):
Абстрактен адаптерен клас за получаване на събития от мишката. Методите в този клас са празни. Този клас съществува като удобство за създаване на слушателски обекти.
Събитията с мишката ви позволяват да проследявате кога мишката е натисната, отпусната, щракната, преместена, плъзгана, кога влиза в компонент, кога излиза и кога колелцето на мишката се движи.
mousePressed
, използвайте MouseAdapter
вместо това.
- 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);
}
focusGained(FocusEvent)
не се ли задейства винаги, когато Component
получи фокус, т.е. когато alt+tab към вашия JFrame?
- person Przemek Kryger; 01.12.2010