Der Effekt, den ich versuche zu erstellen, besteht darin, dass sich das Mauscursor-Symbol ändert, wenn die Maus in eine bestimmte Zone eines JPanels eindringt, und beim Verlassen der Zone auf Standard wechselt. Ich verwende die MouseMoved-Funktion in der MouseMotionListener-Klasse, die überprüft, wenn die Maus über das JPanel bewegt, ob die Koordinaten dem speziellen Bereich entsprechen.Wie kann die Cursorposition in Java effizient verfolgt werden?
Allerdings ist die Belastung des Computerprozessors mit dieser Methode sehr hoch, also wollte ich fragen, ob es einen effizienteren Weg gibt. Jede Hilfe wird geschätzt.
Was das Programm macht, ist das Zeichnen von Zahlen auf einem JPanel, und wenn die Schaltfläche Verbindung ausgewählt ist, verbindet es diese Figuren mit einer Linie, wenn der Benutzer auf eine Figur und dann auf eine andere klickt.
Die Zahlen sind auf dem JPanel gezeichnet, und ihre jeweiligen Regionsgrenzen sind gespeichert. Wenn die Maus bewegt wird, prüft sie, ob die aktuellen X- und Y-Koordinaten innerhalb einer dieser Regionen liegen und ändert den Cursor. Die checkValidConnectionRegion prüft, ob die aktuellen X- und Y-Variablen innerhalb der Region einer Figur liegen. Hier ist der Code für den Handler:
public void mouseMoved(MouseEvent e)
{
if(GUI.Connectionbutton.isSelected())
{
x = e.getX();
y = e.getY();
checkValidConnectionRegion();
if(validConnectionRegion)
setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
if(!validConnectionRegion)
setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
}
Ordnung Ich werde die Frage bearbeiten und nach dem Code. – Hans