我可以添加一个更改侦听器并在创建新的 JSlider 时定义它吗?
我需要创建和添加 JSlider 的顺序意味着我无法预先定义它们,所以我真的没有办法预先存储它们。
本质上:我没有命名 JSlider,但需要一种方法来确定哪个已被更改。
如果不太清楚我在问什么,稍后将添加一些示例代码
编辑:
具体来说,假设我有一个 JSlider 代表最小值,一个 JSlider 代表最大值。我需要用它来表示一系列数字,比如说客户 ID,稍后将显示。
我可以添加一个更改侦听器并在创建新的 JSlider 时定义它吗?
我需要创建和添加 JSlider 的顺序意味着我无法预先定义它们,所以我真的没有办法预先存储它们。
本质上:我没有命名 JSlider,但需要一种方法来确定哪个已被更改。
如果不太清楚我在问什么,稍后将添加一些示例代码
编辑:
具体来说,假设我有一个 JSlider 代表最小值,一个 JSlider 代表最大值。我需要用它来表示一系列数字,比如说客户 ID,稍后将显示。
如果您的滑块定义超出范围(即事件侦听器无法引用变量),那么您可以为滑块提供一个“名称”,您可以查找和比较
JSlider slider = new JSlider();
slider.setName("funky");
//...//
public void stateChanged(ChangeEvent e) {
Object source = e.getSource();
if (source instanceof JSlider) {
JSlider slider = (JSlider)source;
String name = slider.getName();
if ("funky".equals(name)) {
// Do funky stuff
}
}
}
但是,如果您将您定义JSlider
为类级别字段,则可以将事件源的引用与定义的滑块进行比较...
private JSlider slider;
//...//
slider = new JSlider();
slider.setName("funky");
//...//
public void stateChanged(ChangeEvent e) {
if (slider == e.getSource()) {
// Do funky stuff
}
}
实际上,如果可以的话,您应该为每个滑块提供它自己的侦听器并直接从源头处理它...
JSlider slider = new JSlider();
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
JSlider slider= (Slider)e.getSource();
// Do funky stuff
}
});