проблема с методом setLabelTable для настройки меток JSlider - PullRequest
2 голосов
/ 15 июня 2011

Согласно этому учебнику , для настройки меток JSlider необходимо сделать следующее:

JSlider framesPerSecond = new JSlider(JSlider.VERTICAL,
                                      FPS_MIN, FPS_MAX, FPS_INIT);
framesPerSecond.addChangeListener(this);
framesPerSecond.setMajorTickSpacing(10);
framesPerSecond.setPaintTicks(true);

//Create the label table
Hashtable labelTable = new Hashtable();
labelTable.put( new Integer( 0 ), new JLabel("Stop") );
labelTable.put( new Integer( FPS_MAX/10 ), new JLabel("Slow") );
labelTable.put( new Integer( FPS_MAX ), new JLabel("Fast") );
framesPerSecond.setLabelTable( labelTable ); //ERROR

framesPerSecond.setPaintLabels(true);

На самом деле Eclipse жалуется на то, что setLabelTable want - это словарь, а не HashTable (я использую sun sdk 1.6.0_25). Ошибка следующая:

Метод setLabelTable (Словарь) в типе JSlider не применяется для аргументов (Hashtable)

Все примеры, которые я нашел в Интернете, говорят мне, чтобы я делал это.

Так в чем же проблема?

EDIT:

мой вопрос был неправильным. Это была просто ошибка включения. Посмотрите на мой ответ.

Ответы [ 3 ]

5 голосов
/ 16 июня 2011

Как я только что прокомментировал, Dictionary - это суперкласс HashTable, и вы можете поставить HashTable setLabelTabel, но если eclipse покажет вам эту ошибку, мы можем подумать о двух случаях:

  • вы не используете Java.util.Hashtable

  • вы не используете javax.swing.JSlider

Я думаю, во-первых, ваша проблема, просто проверьте ее.

3 голосов
/ 16 июня 2011

Я не совсем уверен, но это может сработать, если просто заменить Hashtable на Dictionary, что, по-видимому, и нужно методу.

Dictionary labelTable = new Dictionary();
labelTable.put(new Integer(0), new JLabel("Stop"));
labelTable.put(new Integer(FPS_MAX / 10), new JLabel("Slow"));
labelTable.put(new Integer(FPS_MAX), new JLabel("Fast"));
framesPerSecond.setLabelTabel(labelTable);
1 голос
/ 16 июня 2011

О, спасибо вам обоим @Ninto и @Sorceror.Вы правы.Это была ошибка включения:

import com.sun.org.apache.xalan.internal.xsltc.runtime.Hashtable;

вместо:

import java.util.Hashtable;
...