2

このチュートリアルによると、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 が HashTable ではなく Dictionary であると不平を言っています (私は sun SDK 1.6.0_25 を使用しています)。エラーは次のとおりです。

タイプ JSlider のメソッド setLabelTable(Dictionary) は、引数 (Hashtable) には適用されません。

インターネットで見つけたすべての例は、そのようにするように指示しています。

だから問題は何ですか?

編集:

私の質問は間違っていました。ただのインクルードエラーでした。私の答えを見てください。

4

3 に答える 3

5

先ほどコメントしたように、Dictionary は HashTable のスーパークラスであり、HashTable setLabelTabel を配置できますが、Eclipse でこのエラーが表示される場合は、次の 2 つのケースについて考えることができます。

  • java.util.Hashtable を使用していない

  • javax.swing.JSlider を使用していない

最初はあなたの問題だと思います。

于 2011-06-15T20:17:50.740 に答える
3

完全にはわかりませんが、単純にに置き換える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);
于 2011-06-15T20:04:47.823 に答える
1

ああ.. @Ninto と @Sorceror の両方に感謝します。あなたが正しいです。インクルードエラーでした:

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

それ以外の :

import java.util.Hashtable;
于 2011-06-15T20:14:25.447 に答える