Ich habe mir eine Erweiterung des Interface MouseListener erstellt
Kann man die abstrakte Klasse MouseListenerX als Interface darstellen, sodass folgender immer ausgeführt wird, auch wenn die Methode überschrieben wird.
Ich möchte nach Möglichkeit nicht jedes mal wenn ich die Methode überschreibe folgenden Aufrufen
sondern
Das ist meine derzeitige Testnutzung. Vielen Dank
Java:
package javaext.awt.event.listener.mouse;
import java.awt.event.*;
public interface CustomMouseListener extends MouseListener {
void mouseDoubleClicked(MouseEvent e);
void mouseRightClicked(MouseEvent e);
}
Java:
package javaext.awt.event.listener.mouse;
import java.awt.event.*;
public abstract class MouseListenerX implements CustomMouseListener {
private long lastClickTime = 0;
private int clickCount = 0;
@Override
public void mouseClicked(MouseEvent e) {
long clickTime = System.currentTimeMillis();
if (clickCount == 1 && (clickTime - lastClickTime < 500)) {
mouseDoubleClicked(e);
clickCount = 0;
} else {
clickCount = 1;
}
lastClickTime = clickTime;
}
@Override
public abstract void mouseDoubleClicked(MouseEvent e);
@Override
public abstract void mouseRightClicked(MouseEvent e);
@Override
public abstract void mousePressed(MouseEvent e);
@Override
public abstract void mouseReleased(MouseEvent e);
@Override
public abstract void mouseEntered(MouseEvent e);
@Override
public abstract void mouseExited(MouseEvent e);
}
Kann man die abstrakte Klasse MouseListenerX als Interface darstellen, sodass folgender immer ausgeführt wird, auch wenn die Methode überschrieben wird.
Java:
@Override
public void mouseClicked(MouseEvent e) {
long clickTime = System.currentTimeMillis();
if (clickCount == 1 && (clickTime - lastClickTime < 500)) {
mouseDoubleClicked(e);
clickCount = 0;
} else {
clickCount = 1;
}
lastClickTime = clickTime;
}
Java:
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
//neuer Code
}
sondern
Java:
@Override
public void mouseClicked(MouseEvent e) {
//neuer Code
}
Java:
button.addMouseListener(new MouseListenerX() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
}
@Override
public void mouseDoubleClicked(MouseEvent e) {
System.out.print(2);
}
@Override
public void mouseRightClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
});
frame.add(button);
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
Das ist meine derzeitige Testnutzung. Vielen Dank
Zuletzt bearbeitet: