2017-02-13 142 views
1

我遇到了我構建的GUI問題。我試圖在滾動某些對象時設置不同的光標更改 - 即,將鼠標懸停在按鈕上時的手形光標以及懸停在文本框上時的文本光標。但是,適當的代碼不起作用。我都試過以下代碼:滾動對象時鼠標光標不會改變

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

而且

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

我知道,但是,光標不會改變的原因是因爲這些對象是嵌套在一個是面板調整JSplitPane。但是,JSplitPane已被禁用,因爲我不希望它被允許調整大小。有什麼辦法可能重寫一個方法,並允許這些遊標更改?謝謝!

+0

通常你會將光標設置在MouseEvent.mouseEntered中。那是你在哪裏調用setCursor? – ControlAltDel

+0

@ControlAltDel那麼除非你重寫它,否則不需要在MouseEvent.mouseEntered中設置它?我只是在我設置每個組件屬性的setLayout()方法內調用setCursor。 –

回答

1

但是,JSplitPane被禁用,因爲我不希望它被允許調整大小。

另一種方法來禁用調整大小是隻禁用分配器和從在將splitPane除法除去的MouseListener:

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

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

現在,因爲該組件沒有被禁用光標可以被設置。

+0

這很有用,非常感謝!順便說一句,你有什麼想法如何改變文本字段內閃爍的文本光標的顏色? –