スライダーがスコープ外で定義されている (つまり、イベント リスナーが変数を参照する方法がない) 場合は、スライダーに「名前」を指定して、検索して比較することができます。
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
}
});