2017-02-13 14 views
1

У меня проблема с графическим интерфейсом, который я построил. Я пытаюсь установить различные изменения курсора при переходе по определенным объектам, т. Е. Курсор руки при наведении курсора на кнопки и текстовый курсор при зависании над текстовыми полями. Однако соответствующий код не работает. Я пробовал оба следующие коды:Курсор мыши не изменится при переходе по объектам

classArmBtn.setCursor(new Cursor(Cursor.HAND_CURSOR)); 

И

classAlcBtn.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); 

Я знаю, однако, что причина курсоры не изменится, потому что эти объекты находятся в панелях, которые вложены в пределах Панель с разделителем. Однако JSplitPane отключен, потому что я не хочу, чтобы ему разрешалось изменять размер. Есть ли способ переопределить метод и разрешить эти курсоры? Благодаря!

+0

Обычно вы устанавливаете курсор в MouseEvent.mouseEntered. Это где вы вызываете setCursor? – ControlAltDel

+0

@ControlAltDel хорошо не нужно устанавливать его в MouseEvent.mouseEntered, если вы не переопределяете его правильно? Я просто вызывал setCursor внутри моего метода setLayout(), где я устанавливал свойства каждого компонента. –

ответ

1

JSplitPane, однако, отключен, потому что я не хочу, чтобы его разрешали изменять размер.

Другой способ отключить изменение размера, чтобы отключить делитель только и удалите MouseListener из splitpane делителя:

BasicSplitPaneUI ui = (BasicSplitPaneUI)splitPane.getUI(); 
BasicSplitPaneDivider divider = ui.getDivider(); 
divider.setEnabled(false); 

for (MouseListener ml: divider.getListeners(MouseListener.class)) 
    divider.removeMouseListener(ml); 

Теперь курсор может быть установлен, так как компонент не отключается.

+0

Это работало как шарм, спасибо огромное! Кстати, знаете ли вы, как я могу изменить цвет мигающего текстового курсора внутри текстовых полей? –

 Смежные вопросы

  • Нет связанных вопросов^_^