Dynamische Skalierung von JSlider

Java?

Grünschnabel
Hi,

ich möchte die Skalierung eines Slider dynamisch erzeugen. Das Grundprinzip läuft und funktioniert. Nur die Skalierung macht noch nicht, dass was sie soll! Ich möchte gern, dass die Skalierung von dem Wert maximum abhängig ist.

Hier ist der Code der Method refreshSliper():

Code:
  public void refreshSlider(int maximum) {
        slider.setMinimum(0);
        slider.setMaximum( maximum);
        slider.setValue( maximum);
        //maximum > 20
        if (maximum > 20) {
            slider.setMajorTickSpacing(20);  //langer Strich bei 20, 40, .... + Zahl
            slider.setMinorTickSpacing(10); //kurzer Strich bei 10, 30, .........
        } else {
           //maximum <= 5
            if (maximum <= 5) {
                slider.setMajorTickSpacing(1); //langer Strich bei 1, 2, 3, 4, 5 und jeweilige zahl
            } else {
             //maximum <= 20
                if (maximum <= 20) {
                    slider.setMajorTickSpacing(5);  //langer Strich bei 5, 10, 15, 20
                    slider.setMinorTickSpacing(1); /kurzer Strich bei 1, 2, 3, 4,.........
                }
            }
        }
        slider.setPaintTicks(true);
        slider.setPaintLabels(true);
        slider.setSnapToTicks(true);
    }

Ich möchte gern, dass der Abstand der MinorTicks und MajorTicks abhängig von maximum gesetzt werden. Aber wenn ich den Code ausführe, sind die Zahlen nicht nur unter den langen Strichen sondern auch bei den kurzen.

Ich habe schon verschiedenes probiere, die gesetzten MajorTickSpacing und MinorTickSpacing mir ausgeben lassen. Alles ist richtig gesetzt. Irgendwie wird immer der geringste Wert genutzt und wenn maximum z.B. 80 ist steht unten nur ein schwarzer Strich, weil soviele Labels ausgegeben werden.

Vielen Dank für Tipps.

Gruß Java?
 

Neue Beiträge

Zurück