2016-10-31 6 views
1

Okay, ich habe diese Funktion, die ich auf jedem JButton, den ich erstelle, anrufe, und es funktioniert gut.Java GUI Mauszeiger

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)); 

     } 
    }); 
} 

Allerdings funktioniert dieser Code nur, wenn ich über einen JButton bewegen und setzt den Mauszeiger auf Standard zurück, wenn ich vom Button wegbewegen. Also, auf einer separaten Klasse/Funktion:

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

Nachdem diese zwei Funktionen aufrufen, die erste Funktion addcursor (JButton) funktioniert nicht mehr, ich will nur die Tasten gesetzt getModel zurück, wie es war, nach Setzen Sie den Cursor auf den Standardwert zurück. Beachten Sie, dass ich auch versucht habe, die Funktion addcursoor (JButton) erneut aufzurufen, nachdem ich den crusor auf den Standardwert gesetzt habe, aber er hat immer noch nicht funktioniert. Vielen Dank.

+0

Warum können Sie nicht einfach Cursor direkt auf die jbuttons setzen? Warum sollten Sie das Modell überwachen und den globalen Cursor ändern? Dies kann dazu führen, dass Sie Probleme mit dem Cursor haben. – Mordechai

+0

Ich bin unklar, was Sie versuchen zu erreichen – ControlAltDel

Antwort

4

Komponenten bereits einen Cursor unterstützen, die auf einer Maus eingegeben Ereignis ändern:

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

Der Cursor auch auf einer Maus verlassen Ereignis zurückgesetzt. Sie benötigen also keine spezielle Logik, um diese Art von Funktionalität zu unterstützen.

setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); 

habe ich immer verwendet nur setCursor(null) wenn manuelle Manipulation des Cursors zu tun.

+0

Viel einfacher als die ganze Funktion, die ich verwendete, vielen Dank. – Ahmed