Как добавить changeHandler () в мою программу - PullRequest
0 голосов
/ 31 марта 2012

Пожалуйста, я попытался добавить событие changeHandler, но я не думаю, что понял его правильно. Я смотрю на следующие заявления ..

pickNum.addChangeListener(new ChangeHandler());

 @Override
 public void stateChanged(changeEvent e)
 {
   JSlider s = (JSlider)e.getSource();
   index = s.getValue();
 }

Есть ли что-то, что я мог бы сделать лучше, потому что это не работает ..

import javax.swing.*;

public class Slider extends JFrame{

public static int index;
JSlider pickNum = new JSlider(JSlider.HORIZONTAL,0,30,5);
public Slider()
{
 super("Slider");
 this.pack();
 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 pickNum.setMajorTickSpacing(10);
 pickNum.setMinorTickSpacing(1);
 pickNum.setPaintTicks(true);
 pickNum.setPaintLabels(true);
 pickNum.addChangeListener(new ChangeHandler());

 @Override
 public void stateChanged(changeEvent e)
 {
   JSlider s = (JSlider)e.getSource();
   index = s.getValue();
 }

 getPointedValue();
 this.add(pickNum);
 this.setVisible(true);

}

public final int getPointedValue()
{
    int value;
    value = pickNum.getValue();
    return value;
}


     public static void main(String[] args) {

    Slider frame = new Slider();
    System.out.println("value is :"+Slider.index);
   }

 }

[/CODE]

Ответы [ 3 ]

3 голосов
/ 31 марта 2012

Какой у вас ChangeHandler?Вы не опубликовали этот код

Вот пример использования прослушивателя изменений


JSlider s = new JSlider();
s.addChangeListener(new ChangeListener() {
   public void stateChanged(ChangeEvent e) {
      System.out.println("Changed: " + e);
   }
});
2 голосов
/ 31 марта 2012

Что это за класс ChangeHandler, о котором вы говорите? Это не часть JDK. Вы смешали класс ChangeHandler от GWT с ChangeListener от JDK?

Далее, я бы посоветовал вам взглянуть на Swing slider для примера кода, работающего со слайдерами. Например, хороший пример реализации такого ChangeListener, прикрепленного к ползунку

* * 1010

Обратите внимание на вызов getValueIsAdjusting(), который вы пропустили в своем фрагменте кода

2 голосов
/ 31 марта 2012

Какова реализация вашего ChangeHandler? Вам не нужен отдельный файл для него, интерфейс ChangeListener имеет только один метод, поэтому вы можете быстро предоставить реализацию, объявив ее встроенной

pickNum.addChangeListener(new ChangeListener() {    
    @Override
    public void stateChanged(ChangeEvent arg0) {
        JSlider s = (JSlider) arg0.getSource();
        index = s.getValue();   
    }
});
...