Эффект, который я пытался создать, состоит в том, что значок курсора мыши изменяется всякий раз, когда мышь входит в определенную зону на JPanel, и переключается на значение по умолчанию при каждом выходе из зоны. Я использую функцию MouseMoved в классе MouseMotionListener, которая всякий раз, когда мышь перемещается над JPanel, проверяет, соответствуют ли координаты специальной области.
Однако при использовании этого метода нагрузка на процессор компьютера очень высока, поэтому я хотел спросить, есть ли более эффективный способ сделать это. Любая помощь приветствуется.
Что программа делает, так это рисует фигуры на JPanel, а когда выбрана кнопка «Соединение», она связывает эти фигуры с линией, если пользователь нажимает на одну фигуру, а затем на другую.
Фигуры нарисованы на JPanel, и их границы соответствующих областей сохранены, поэтому, когда мышь перемещается, она проверяет, находятся ли текущие координаты X и Y внутри одной из этих областей, и если это так, меняет курсор. CheckValidConnectionRegion проверяет, находятся ли текущие переменные X и Y внутри области фигуры. Вот код для обработчика:
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));
}
}