【问题标题】:Java JSlider: Dictionary is deprecated for method setLabelTable, what else should I use?Java JSlider:方法 setLabelTable 不推荐使用字典,我还应该使用什么?
【发布时间】:2020-02-06 15:36:35
【问题描述】:

我目前正在尝试为 Java 中的 JSlider 设置自定义标签。

我查看了Java API,发现了这个方法:public void setLabelTable(Dictionary labels)

不幸的是,Dictionary 类及其子类 Hashtable 已过时。

根据这个问题的答案:Using Java Dictionary...use a Hashtable?

Hashtable 类已被 HashMap“替换”。

所以我尝试发送HashMap 而不是Hashtable,我非常怀疑它会起作用。

不出所料,编译器给了我这个错误:

incompatible types: HashMap<Integer, JLabel> cannot be converted to Dictionary

我可以选择使用DictionaryHashtable 类并使用Xlint:Deprecated 进行编译,它会给我想要的结果。

但我不想使用已经过时了一段时间的东西。

我应该使用什么来代替setLabelTable(Dictionary labels)

或者除了使用setLabelTable(Dictionary labels)之外别无他法?

我想在不使用已弃用或过时的 API 的情况下生成此 GUI。

【问题讨论】:

    标签: java swing user-interface jslider


    【解决方案1】:

    DictionaryHashtable 类已弃用以供将来使用,不应用于只需要存储键值对的应用程序。 (如您所见,新应用程序应使用 Collections 类 HashMap。)

    但是,对于像您这样的应用程序,在调用另一个需要DictionaryHashtable 作为参数的函数时,仍然可以使用旧类。你真的别无选择。

    如果您想尽量减少项目中使用旧类的代码量,您可以使用 HashMap 来存储标签,然后使用 setLabelTable 以及构建 @ 的 Hashtable 构造函数987654329@ 来自HashMap 像这样:

     mySlider.setLabelTable(new Hashtable(myLabelHashMap))
    

    【讨论】:

      猜你喜欢
      • 2016-05-18
      • 2013-08-07
      • 2016-06-26
      • 2013-05-20
      • 2012-01-11
      • 1970-01-01
      • 2018-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多