2010-01-31 10 views
13

Sto facendo una GUI (usando swing) per una struttura di poker e ho bisogno di una sorta di dispositivo di scorrimento per consentire ai giocatori di selezionare una dimensione di scommessa. Tuttavia, lo Swing JSlider funziona solo con valori int mentre io ho bisogno di qualcosa che supporti i doppi per 1 punto decimale. Ci sono biblioteche che posso usare o trucchi con lo JSlider?JSlider per i doppi

+0

correlati http://stackoverflow.com/questions/1548606/java-link-jslider-and-jtextfield-for-float-value –

risposta

13

È possibile moltiplicare il valore del 10

EDIT

È possibile modificare le etichette visualizzate come segue:

Hashtable labelTable = new Hashtable(); 
labelTable.put(new Integer(0), new JLabel("0.0")); 
labelTable.put(new Integer(5), new JLabel("0.5")); 
labelTable.put(new Integer(10), new JLabel("1.0")); 
framesPerSecond.setLabelTable(labelTable); 
+0

come si visualizzano i valori sui tick come doppi – Aly

+0

È possibile utilizzare setLabelTable per modificare il valore componenti (JLabel) utilizzati per i valori visualizzati. –

+0

L'ho dimenticato - cancellando il mio post in favore di quella soluzione. – aperkins

7

Uno trucco è possibile utilizzare con JSlider è quello di utilizzare le unità in centesimi. Quindi, se si desidera che l'utente selezioni un importo compreso tra 1 e 10 dollari, si imposta effettivamente il JSlider nell'intervallo da 100 a 1000. Quindi è sufficiente convertire il valore in dollari e centesimi quando l'utente seleziona un valore.

È quindi possibile utilizzare un dizionario di valori per specificare quale etichetta viene visualizzata con qualsiasi valore sul dispositivo di scorrimento. Utilizzare il metodo setLabelTable() per questo.

+0

E per quanto riguarda la situazione in cui il numero minimo deve essere un doppio, diciamo 5.5, farei in modo che la JLabel legga 5.5 e mappi il numero intero 5 a questa JLabel. Ma quando chiamo JSlider.getValue() otterrò 5 e non 5.5. Qualche idea su come affrontare questo? – Aly

+0

Il valore minimo in questo caso è 550. Si mappa questo a 5.50 per la visualizzazione. Quando ottieni il valore selezionato dall'utente, dividi semplicemente 100 per ottenere 5.5. –

Problemi correlati