Ist das ein Fehler in JSlider?

8

Ich habe einige Probleme mit dem JSlider Klasse - speziell mit Tick-Labels.

Bei der ersten Verwendung von setMajorTickSpacing und setMinorTickSpacing funktioniert alles wie erwartet. Nachfolgende Aufrufe von setMajorTickSpacing aktualisieren jedoch die Ticks, nicht jedoch die Labels. Ich habe ein einfaches Beispiel geschrieben, um dieses Verhalten zu demonstrieren:

%Vor%

Zwei einfache Problemumgehungen scheinen das Problem zu beheben - entweder mit slider.setLabelTable(null) oder slider.setLabelTable(slider.createStandardLabels(25)) vor dem zweiten Aufruf von setMajorTickSpacing . Angesichts dieser Tatsache scheint es, dass die Etikettentabelle nicht korrekt aktualisiert wird.

Ich bin mir nicht sicher, ob dies das beabsichtigte Verhalten ist oder nicht. Mein erster Instinkt ist, dass das Aktualisieren der Tick-Abstände auch die Labels aktualisieren sollte, aber es gibt auch Argumente für die Trennung der beiden.

Also würde ich gerne wissen, was es ist - ist das ein Fehler in JSlider oder das beabsichtigte Verhalten? Wenn es das beabsichtigte Verhalten ist, was wären die herausragenden Gründe für diese Entscheidung?

    
charlemagne 24.09.2012, 09:59
quelle

1 Antwort

5

Sie können die Ursache dieses Problems leicht erkennen, indem Sie in setMajorTickSpacing Quellcode schauen:

%Vor%

Wenn Sie diese Methode zweimal aufrufen - labelTable value ist nicht mehr null und wird nicht aktualisiert. Es könnte ein beabsichtigtes Verhalten gemäß dem Kommentar der Methode sein:

%Vor%

Sie müssen die Labels also jedes Mal aktualisieren, wenn sie aktualisiert werden sollen (es sei denn, Sie überschreiben diese Methode mit Ihrer eigenen, die das Update durchführt).

    
Mikle Garin 24.09.2012, 10:53
quelle

Tags und Links