2016-10-31 169 views
1

好吧,我有這個功能,我打電話給我創建的每個JButton,並且它工作正常。Java GUI鼠標光標

public void addcursor(JButton button) 
{ 
    button.getModel().addChangeListener(new ChangeListener(){ 
     public void stateChanged(ChangeEvent e){ 
      ButtonModel model=(ButtonModel) e.getSource(); 
      if(model.isRollover())     
       setCursor(new Cursor(Cursor.HAND_CURSOR));    
      else 
       setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); 

     } 
    }); 
} 

然而,此代碼的工作,只有當我搬過來一個JButton,並設置鼠標光標回默認當我移動從按鈕離開。因此,在一個單獨的類/功能:

gui.getRootPane().setCursor(new Cursor(Cursor.WAIT_CURSOR)); 
gui.getRootPane().setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); 

調用這些函數2後,第一個功能addcursor(JButton的)不工作了,我只是想設置的按鈕getModel回是怎麼回事後,將光標設置回默認值。請注意,我也嘗試在將crusor設置爲默認值後重新調用addcursoor(JButton)函數,但它仍然無效。謝謝。

+0

爲什麼你不能直接將遊標設置爲jbuttons?爲什麼要監視它的模型,並改變全局光標?這可能會導致您的遊標設置衝突問題。 – Mordechai

+0

我不清楚你想要達到什麼目標 – ControlAltDel

回答

4

組件已經支持光標將在鼠標輸入的事件改變:

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

光標也將重置鼠標退出事件。所以你不需要任何特殊的邏輯來支持這種類型的功能。

setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); 

我一直在使用setCursor(null)做手動操作光標時。

+0

比我使用的整個功能要容易得多,非常感謝。 – Ahmed