Hiho,
ich versuche grade mein Programm ohne die Titelleiste (also setUndecorated(true)) mit der Maus zu verschieben. Einen Ansatz habe ich und rein theoretisch sollte es auch funktionieren, was es auch mehr oder weniger tut, aber ich habe ein paar Probleme.
Also zunächst einmal ein kleiner Codeausschnitt:
Meine zwei Hauptprobleme:
1. Fahre ich zu schnell mit der Maus und komme dann aus dem Panel mit dem ich die Form bewege, dann klappt es nicht, also ist mein Cursor schneller als sich die Form mitbewegt. Ich müsste die Form mit der Mausbewegung verschieben und nicht erst danach (mouseMove anstatt mouseMoved gibts ja aber anscheinend nicht)
2. Wenn ich meine Maus auf dem Panel gedrückt halte, kann ich nicht direkt die Form verschieben, sondern nur wenn ich wieder los lasse und meine variable mousedown nicht auf false setze.
Ich hoffe es ist wenigstens ein bischen verständlich was ich vorhabe und was das Problem ist, kann mir grade echt nicht helfen wie ich es besser ausdrücken soll
ich versuche grade mein Programm ohne die Titelleiste (also setUndecorated(true)) mit der Maus zu verschieben. Einen Ansatz habe ich und rein theoretisch sollte es auch funktionieren, was es auch mehr oder weniger tut, aber ich habe ein paar Probleme.
Also zunächst einmal ein kleiner Codeausschnitt:
Java:
//werden im konstruktor initialisiert...
JPanel _header;
Point _mouseloc;
boolean mousedown;
@Override
public void mousePressed(MouseEvent e) {
if (e.getSource().equals(_header)){
if (e.getButton() == MouseEvent.BUTTON1){
mousedown = true;
_mouseloc = new Point(e.getX(), e.getY());
}
}
}
@Override
public void mouseReleased(MouseEvent e) {
if (e.getSource().equals(_header)){
mousedown = false;
}
}
@Override
public void mouseMoved(MouseEvent e) {
if (e.getSource().equals(_header)) {
if (mousedown){
PointerInfo a = MouseInfo.getPointerInfo();
Point b = a.getLocation();
int x = (int) (b.getX() - _mouseloc.getX());
int y = (int) (b.getY() - _mouseloc.getY());
this.setLocation(x , y);
}
}
}
Meine zwei Hauptprobleme:
1. Fahre ich zu schnell mit der Maus und komme dann aus dem Panel mit dem ich die Form bewege, dann klappt es nicht, also ist mein Cursor schneller als sich die Form mitbewegt. Ich müsste die Form mit der Mausbewegung verschieben und nicht erst danach (mouseMove anstatt mouseMoved gibts ja aber anscheinend nicht)
2. Wenn ich meine Maus auf dem Panel gedrückt halte, kann ich nicht direkt die Form verschieben, sondern nur wenn ich wieder los lasse und meine variable mousedown nicht auf false setze.
Ich hoffe es ist wenigstens ein bischen verständlich was ich vorhabe und was das Problem ist, kann mir grade echt nicht helfen wie ich es besser ausdrücken soll