2013-03-20 4 views
0

Могу ли я добавить слушателя изменений и определить его при создании нового JSlider?Несколько JSliders - идентифицирующие изменения

Порядок, в котором мне нужно создать и добавить JSliders, означает, что я не могу определить их заранее, поэтому у меня нет способа сохранить их заранее.

По существу: у меня нет имени JSliders, но вам нужен способ определить, какой из них был изменен.

Добавлю к этому с некоторым примером кода позже, если это не слишком ясно, что я подвергаю сомнению о

EDIT:

В частности, представьте себе, у меня есть один JSlider представлять минимальное значение, и один JSlider к представляют максимальное значение. Мне нужно использовать это для представления диапазона чисел, например, идентификаторов клиентов, которые будут отображаться позже.

+0

[getSource()] (http://docs.oracle.com/javase/6/docs/api/java/util/EventObject.html#getSource()) Должно помочь объяснить. – 2013-03-20 00:46:57

ответ

3

Если ползунки определяются из области видимости (т.е. слушатель событий не имеет возможности ссылаться на переменную), то вы можете поставить ползунок с «именем», который вы можете посмотреть и сравнить

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 
    } 
}); 
+0

Да, я верю, что последнее предложение именно то, что я искал. Возможность дать каждому слайдеру собственный слушатель, вероятно, будет работать лучше, чем то, что я пытаюсь сделать для исправления. Я отвечу назад своим успехом завтра, когда я внедрил этот – user1079404

+1

+1 для отдельных слушателей, что упростит сохранение 'max> min'. Также рассмотрите [ползунок диапазона] (http://ernienotes.wordpress.com/2010/12/27/creating-a-java-swing-range-slider/). – trashgod

 Смежные вопросы

  • Нет связанных вопросов^_^