2017-02-13 7 views
1

Ich habe ein Problem mit einer GUI, die ich erstellt habe. Ich versuche verschiedene Cursor-Änderungen zu setzen, wenn ich über bestimmte Objekte rolle - d. H. Handcursor beim Überfahren von Schaltflächen und Textcursor beim Überfahren von Textfeldern. Der entsprechende Code funktioniert jedoch nicht. Ich habe beide die folgenden Codes versucht:Mauszeiger ändert sich beim Überrollen von Objekten nicht

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

Und

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

Ich weiß aber, dass der Grund der Cursor wird sich nicht ändern, weil diese Objekte in Platten sind, die innerhalb eines verschachtelten JSplitPane. JSplitPane ist jedoch deaktiviert, weil ich nicht die Größe ändern möchte. Gibt es eine Möglichkeit, eine Methode zu überschreiben und diese Cursor zu ändern? Vielen Dank!

+0

Normalerweise würden Sie den Cursor in MouseEvent.mouseEntered setzen. Ist das, wo Sie setCursor anrufen? – ControlAltDel

+0

@ControlAltDel Nun gibt es keine Notwendigkeit, es in MouseEvent.mouseEntered einzustellen, es sei denn, Sie überschreiben es richtig? Ich habe gerade setCursor innerhalb meiner setLayout() -Methode aufgerufen, wo ich die Eigenschaften jeder Komponente festlegte. –

Antwort

1

Der JSplitPane ist jedoch deaktiviert, weil ich nicht die Größe ändern möchte.

Eine andere Möglichkeit, Redimensionierung zu deaktivieren, ist die Trennlinie nur zu deaktivieren und den Mouselistener vom splitpane Teiler entfernen:

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

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

Nun kann der Cursor, da die Komponente deaktiviert ist nicht eingestellt werden.

+0

Das hat wie ein Zauber funktioniert, vielen Dank! Übrigens, haben Sie eine Idee, wie ich die Farbe des blinkenden Textcursors in den Textfeldern ändern kann? –

Verwandte Themen