2010-09-20 15 views
5

Ho un JSlider nella GUI che va da 0 a 100. Per qualche ragione, c'è del testo sopra la posizione del cursore che mostra il valore corrente del cursore e segue il mio cursore in giro. Ad esempio, se sposto il mio cursore a metà, "50" appare sopra il punto in cui si trova attualmente il mio cursore. Tuttavia, non riesco a capire come viene chiamato quel campo di testo, tutto quello che so è la sua parte del cursore.Come rimuovere il testo sopra JSlider

Voglio rimuoverlo o essere in grado di cambiarlo in qualcos'altro, come potrei farlo?

+0

Qual interfaccia utente è il cursore usando? 'Slider.getUIClassID()'. La mia interfaccia utente predefinita non mostra di cosa stai parlando. Potrebbe essere necessario fornire la propria interfaccia utente o eseguire l'override o la sottoclasse di una esistente. –

+0

Sì, è strano, da quello che posso dire la maggior parte dei cursori non ce l'ha, ed è per questo che è così difficile e oscuro da capire. Il mio slider.getUIClassID() restituisce "SliderUI" –

+0

Spiacente, prova a stampare 'slider.getUI(). GetClass()'. Colpa mia. –

risposta

4

Avrei appena commentato la risposta di Etaoin, ma non ne ho ancora la reputazione.

In ogni caso, chiamare questo prima di creare un'istanza della JSlider:

UIManager.put("Slider.paintValue", false); 

Nota capitale 'V' in paintValue.

Inoltre, per stampare tutte le cose divertenti che sono attualmente impostati dal tuo UIManager, inserire il codice ovunque dopo l'UIManager è stata creata un'istanza:

Iterator<Entry<Object, Object>> it = UIManager.getDefaults().entrySet().iterator(); 
while(it.hasNext()) 
    System.out.println(it.next()); 
+0

Vedere anche questo [articolo e utilità] (http://tips4java.wordpress.com/2008/10/09/uimanager-defaults/). – trashgod

-1

Come vedo c'è un metodo setLabelTable in JSlider con un parametro Dictionary. Non l'ho usato ma suppongo che se lo si imposta su un dizionario vuoto (o su etichette vuote per ogni valore possibile) non apparirà nessuna etichetta.

Una soluzione migliore è l'utilizzo di setPaintLabels con un valore false.

+1

no, già provato, l'etichettaTabella è usata per contrassegnare le etichette per il cursore (le etichette che vanno sotto un cursore), non lo fa influenzare il valore sopra il cursore. –

+0

Penso che quelli abbiano a che fare con i segni di graduazione. –

+0

followup comment, setPaintLabels è già impostato su false e influisce sulle etichette impostate con setLableTable, che NON è il valore del cursore. Quindi non funziona. Come Mark ha detto, quelli sono per le etichette dei segni di graduazione, non per il valore del cursore di cui sto parlando. –

0

Intendi un suggerimento? È una piccola scatola che appare sul controllo del cursore e segue il tuo mouse se prendi il cursore? In questo caso, è possibile disabilitarlo semplicemente chiamando setToolTipText(null) o sostituendo il testo con setToolTipText("My Text").

3

Questo mi ha infastidito su un progetto una volta e ho trovato la seguente soluzione alternativa. Chiamare questa una volta prima di creare un'istanza tuo JSlider - ho messo in un blocco static nel mio sottoclasse JPanel:

UIManager.put("Slider.paintValue", false); 

Ci vorrà cura di esso.

Problemi correlati