Я изучаю слушателей изменений и хотел бы узнать, почему часть моего кодирования не создает огонь при прослушивании, когда пользователь перемещает слайдер.ChangeListener не срабатывает
Слушатель. Все в том же методе:
ChangeListener lst = new ChangeListener() {
public void stateChanged(ChangeEvent e) {
showDate();
}
};
Вот код, который добавляет слушателя:
m_slDay = new JSlider(JSlider.HORIZONTAL, 1, maxDays,
m_calendar.get(Calendar.DAY_OF_MONTH));
m_slDay.setPaintLabels(true);
m_slDay.setMajorTickSpacing(5);
m_slDay.setMinorTickSpacing(1);
m_slDay.setPaintTicks(true);
// This line of code seems to work.
m_slDay.addChangeListener(lst);
p = new JPanel();
p.setBorder(new TitledBorder(new EtchedBorder(), "Day"));
p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
p.add(Box.createRigidArea(RIGID_DIMENSION));
p.add(m_slDay);
p.add(Box.createRigidArea(RIGID_DIMENSION));
p1.add(p);
Этот код основан на приведенном выше фрагменте кода, но ничего не происходит, когда пользователь перемещает ползунок:
m_slDayOfWeek = new JSlider(JSlider.HORIZONTAL, 1, maxDaysOfTheWeek,
m_calendar.get(Calendar.DAY_OF_WEEK));
m_slDayOfWeek.setPaintLabels(true);
m_slDayOfWeek.setMajorTickSpacing(1);
m_slDayOfWeek.setMinorTickSpacing(1);
m_slDayOfWeek.setPaintTicks(true);
// This one is not working and I'm not sure why it's happening.
m_slDayOfWeek.addChangeListener(lst);
p = new JPanel();
p.setBorder(new TitledBorder(new EtchedBorder(), "Day of Week"));
p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
p.add(Box.createRigidArea(RIGID_DIMENSION));
p.add(m_slDayOfWeek);
p.add(Box.createRigidArea(RIGID_DIMENSION));
p1.add(p);
Я не могу не подозревать, что проблема находится в одной из строк, которые вы не отправляли. Что делает метод showDate()? Вы пытались помещать в него контрольные точки или инструкции println, чтобы проверить, достигнуто ли это? –
Что делает ваш метод 'showDate()'? Можете ли вы добавить точку останова или некоторые операторы отладки syserr в этом месте, чтобы доказать себе, что ничего не происходит? –
Спасибо всем. Хороший улов. Это было в методе showDate(). Одно из операторов if не выполнялось. Использование System.out.println() доказало, что метод выполнялся, но не был частью моего кода. –