Ich habe einige Probleme mit der JSlider Klasse - speziell mit Tick Etiketten.Ist das ein Fehler in JSlider?
Das erste Mal, dass ich setMajorTickSpacing
und setMinorTickSpacing
verwende, funktioniert alles wie erwartet. Nachfolgende Aufrufe an setMajorTickSpacing
aktualisieren jedoch die Ticks, aber nicht die Labels. Ich habe ein einfaches Beispiel geschrieben, dieses Verhalten zu zeigen:
import java.awt.event.*;
import javax.swing.*;
public class SliderTest {
public static void main(String args[]) {
JFrame frame = new JFrame();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
});
frame.setSize(300, 250);
JSlider slider = new JSlider(0, 100, 0);
slider.setMajorTickSpacing(10);
slider.setMinorTickSpacing(1);
slider.setPaintLabels(true);
slider.setPaintTicks(true);
slider.setMajorTickSpacing(25);
slider.setMinorTickSpacing(5);
frame.add(slider);
frame.pack();
frame.setVisible(true);
}
}
Zwei einfache Abhilfen scheinen das Problem zu beheben - entweder slider.setLabelTable(null)
oder slider.setLabelTable(slider.createStandardLabels(25))
vor dem zweiten Aufruf setMajorTickSpacing
verwenden. 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 des Tick-Abstands auch die Labels aktualisieren sollte, aber es gibt auch Argumente, die beiden zu trennen.
Also ich würde 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 Wahl?
sieht aus wie ein Fehler für mich - guter Fang :-) – kleopatra
Vielen Dank für das Teilen über diesen Kurzschluß. –