Hallo, ich arbeite mit einem verschiebbaren JPanel in einem Frame.
Ich möchte eine Begrenzung einbauen, so dass das JPanel immer komplett sichtbar ist.
Zunächst habe ich nur einmal den linken und oberen Rand überprüft. (Methode mouseDragged)
Es funktioniert auch, aber wenn man sich (schnell) dem Randbereich nähert, dann läuft das Ganze sehr unflüssig und ruckelt.
Man muss dann mit der Maus absetzen und neu ansetzen und kann es erst dann ganz zum Rand schieben.
Woran liegt das?
Danke für die Hilfe!
Ich möchte eine Begrenzung einbauen, so dass das JPanel immer komplett sichtbar ist.
Zunächst habe ich nur einmal den linken und oberen Rand überprüft. (Methode mouseDragged)
Es funktioniert auch, aber wenn man sich (schnell) dem Randbereich nähert, dann läuft das Ganze sehr unflüssig und ruckelt.
Man muss dann mit der Maus absetzen und neu ansetzen und kann es erst dann ganz zum Rand schieben.
Woran liegt das?
Danke für die Hilfe!
Java:
private class MyMouseAdapter extends MouseAdapter {
int dx;
int dy;
@Override
public void mouseDragged(MouseEvent arg0) {
if (arg0.getComponent() == actPanel) {
int newx = arg0.getXOnScreen() - dx;
int newy = arg0.getYOnScreen() - dy;
if (newx >= 0 && newy >= 0)
actPanel.setLocation(newx, newy);
}
}
@Override
public void mousePressed(MouseEvent arg0) {
actPanel = (JPanel) arg0.getSource();
dx = arg0.getXOnScreen() - actPanel.getX();
dy = arg0.getYOnScreen() - actPanel.getY();
}
@Override
public void mouseReleased(MouseEvent arg0) {
dx=0;
dy=0;
}
@Override
public void mouseEntered(MouseEvent e) {
actPanel.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
}
}