【问题标题】:How can I distinguish between multiple JSliders in an ActionListener?如何区分 ActionListener 中的多个 JSlider?
【发布时间】:2015-11-11 19:10:40
【问题描述】:

我想创建一个 GUI,在其中显示动态行数,其中包含一个 JSlider 和一个显示值的 JLabel(参见模型)。

现在我必须在相关滑块的更改上更新每个标签。我想使用一个常见的 ActionListener。我认为 JButton 有类似 ActionCommand 的东西来识别哪个滑块确实发生了变化。但是没有:-(

我唯一的想法是存储一个带有 key=slider 引用和 value=label 引用的 HashMap。有没有更优雅的解决方案?

编辑: 更优雅的意思是:不需要存储滑块和标签的引用,因此我不必在更改行数时更新 HashTable。

【问题讨论】:

  • 您可以在事件中使用 getSource() 并对照滑块进行检查吗?当然,这只有在滑块是类变量时才有效

标签: java actionlistener jslider


【解决方案1】:

这样的东西应该可以工作

public class MyClass implements ActionListener() {

  JSlider slider1 = new JSlider();
  JSlider slider2 = new JSlider();

  @Override
  public void actionPerformed(ActionEvent e) {
    if (e.getSource() == slider1) {
      //do logic for slider 1
    } else if (e.getSource() == slider2) {
      //do logic for slider 2
    }
    //etc...
  }
  //rest of class here
}

【讨论】:

  • 感谢 Brandon,这将是我使用 HashTable 的解决方案,我在其中存储所有引用,并且当我更改滑块的数量时,我总是必须更新表。所以我正在寻找一个更优雅的解决方案,而不需要存储引用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-05
  • 1970-01-01
  • 2018-07-28
  • 1970-01-01
  • 2013-06-05
  • 2012-11-27
相关资源
最近更新 更多