2013-01-14 7 views

Antwort

5

Setzen Sie einen booleschen Wert auf "true", wenn Sie setValue programmgesteuert (vor dem Aufruf) aufrufen, und setzen Sie ihn auf "false" zurück, wenn Sie mit der Ereignisbehandlung fertig sind.

1

Intern wird'setValue' aufgerufen. Sie können versuchen, das Ereignis abzufangen, wenn der Benutzer den Schieberegler bewegt, indem er eine ChangeListener implementiert, um dieses Ereignis zu erfassen. Denken Sie außerdem daran, dass das Bewegen des Knopfes viele Änderungsereignisse auslöst. Wenn Sie sich also für den endgültigen Wert des Schiebereglers interessieren, verwenden Sie den Wert getValueIsAdjusting, wenn er false ergibt.


Wenn das Problem ein ChangeListener ist withing, versuchen Sie die JSlider Komponente erstreckt und eine neue Methode hinzufügen, die den neuen Wert erhält und wer gibt es (mit einem int-Code oder einer Enumeration, zum Beispiel), um die Einstellung Ableiten des Werts, nachdem Sie Ihre benutzerdefinierte Logik auf die reale setValue-Methode festgelegt haben.

In Ihrem Fall wollen Sie die Invokation von setValue verhindern, wenn eine bestimmte Komponente es aufruft, wenn ich mich nicht irre.

+0

Ich habe bereits das Ereignis gefangen, das Problem ist innerhalb des Ereignisses, weil es zwei Objekte voneinander abhängig sind und sie eine andere Werte ändern, so dass sie in einer Endlosschleife erhalten, deshalb Ich muss die Art der Veränderung erkennen. –

+0

@ AndrewG.H. Ich habe meine Antwort aktualisiert. – Gamb

Verwandte Themen