2010-09-20 6 views
5

Ich habe eine JSlider in meiner GUI, die von 0 bis 100 geht. Aus irgendeinem Grund gibt es Text über dem Schieberegler Position, die den aktuellen Wert des Schiebereglers anzeigt und es folgt meinem Schieberegler. Das heißt, wenn ich meinen Schieberegler halbwegs bewege, erscheint "50" oberhalb des aktuellen Schiebereglers. Ich kann jedoch nicht herausfinden, wie dieses Textfeld heißt, alles was ich weiß ist sein Teil des Sliders.So entfernen Sie Text über JSlider

Ich möchte es entweder entfernen oder in der Lage sein, es zu etwas anderem zu ändern, wie würde ich das tun?

+0

Welche UI ist mit dem Schieberegler? 'slider.getUIClassID()'. Meine Standard-Benutzeroberfläche zeigt nicht, wovon Sie sprechen. Sie müssen möglicherweise Ihre eigene Benutzeroberfläche bereitstellen oder eine vorhandene überschreiben/unterklassifizieren. –

+0

Ja, es ist seltsam, von dem, was ich sagen kann die meisten Schieberegler hat es nicht, weshalb es so schwer und dunkel ist, um herauszufinden. Meine slider.getUIClassID() gibt "SliderUI" zurück. –

+0

Sorry, versuche 'slider.getUI(). GetClass() 'auszudrucken. Mein Fehler. –

Antwort

4

Ich hätte Etaoins Antwort gerade kommentiert, aber ich habe noch nicht den Ruf dafür.

Jedenfalls nennen dies vor dem JSlider Instanziierung:

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

Notiere die Hauptstadt 'V' in paintValue.

Darüber hinaus sind alle der Spaß Dinge zu drucken, die aktuell von Ihrem UIManager gesetzt ist, geben Sie diesen Code an beliebiger Stelle nach dem UIManager instanziiert wurde:

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

Siehe auch dieses [Artikel und Dienstprogramm] (http://tips4java.wordpress.com/2008/10/09/uimanager-defaults/). – trashgod

-1

Wie ich sehe, gibt es eine setLabelTable Methode in JSlider mit einem Dictionary-Parameter. Ich habe es nicht verwendet, aber ich denke, wenn Sie es auf ein leeres Wörterbuch (oder leere Etiketten für jeden möglichen Wert) setzen, dann werden keine Etiketten angezeigt. Eine bessere Lösung ist die Verwendung von setPaintLabels mit einem false Wert.

+1

nein, schon versucht es, die labelTable wird verwendet, um die Etiketten für den Slider (die Etiketten, die unter einem Schieberegler gehen) zu markieren, tut es nicht Beeinflussen Sie den Wert über dem Schieberegler überhaupt nicht. –

+0

Ich denke, dass diese mit den Häkchen zu tun haben. –

+0

followup-Kommentar, setPaintLabels ist bereits standardmäßig auf false gesetzt und wirkt sich auf die Beschriftungen aus, die Sie mit setLableTable festlegen. Dies ist NICHT der Wert des Schiebereglers. Es funktioniert also auch nicht. Wie Mark sagte, sind diese für die Tickmarkierungen, nicht der Schiebereglerwert, über den ich spreche. –

0

Meinst du einen Tooltip? Ist es eine kleine Box, die über dem Schieberegler erscheint und Ihrer Maus folgt, wenn Sie den Schieberegler greifen? Wenn dies der Fall ist, können Sie es einfach deaktivieren, indem Sie setToolTipText(null) aufrufen, oder überschreiben Sie den Text mit setToolTipText("My Text").

3

Dies störte mich einmal an einem Projekt, und ich fand die folgende Problemumgehung. Rufen Sie dies einmal vor Ihrer JSlider Instanziieren - ich habe es in meiner JPanel Unterklasse in einem static Block setzen:

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

Das wird sich darum kümmern.

Verwandte Themen