Come rendere visibili solo le estremità per i jslider
Domanda
Diciamo che ho un jslider orizzo da 0 a 100. Quello che voglio fare è: - Impostare una spaziatura importante su 10 e minori a 5 ma le cifre non dovrebbero essere visibili - i valori delle estremità (0 e 100) dovrebbero essere visibili - Quando muovo la freccia di posizionamento, voglio avere un'etichetta accanto al cursore del mouse che mi dice il valore effettivo.
Soluzione
Impostare la spaziatura importante su 10 e minori a 5 ma le cifre non dovrebbero essere visibili: i valori delle estremità (0 e 100) dovrebbero essere visibili
Questo può essere facilmente fatto usando alcuni metodi di jslider come,
JSlider slider = new JSlider(JSlider.VERTICAL, 0, 100, 0);
slider.setMinorTickSpacing(5);
slider.setMajorTickSpacing(10);
slider.setPaintTicks(true);
Hashtable<Integer, JLabel> labels = new Hashtable<Integer, JLabel>();
labels.put(0, new JLabel("0"));
labels.put(100, new JLabel("100"));
slider.setLabelTable(labels);
slider.setPaintLabels(true);
Quando muovo la freccia di posizionamento, voglio avere un'etichetta accanto al cursore del mouse che mi dice il valore effettivo.
Puoi ottenere una cosa simile utilizzando Sliderui del cliente e prevalere sul metodo Paintthumb. Questo non è esattamente che vuoi ma puoi provare questo:
slider.setUI(new BasicSliderUI(slider) {
public void paintThumb(Graphics g) {
super.paintThumb(g);
g.setColor(Color.RED);
g.drawString(slider.getValue() + "", thumbRect.x, thumbRect.y + thumbRect.height);
}
});