私は変更リスナーについて学習していますが、ユーザーがスライダーを動かすときにコーディングの一部が変更リスナーを起動しない理由を知りたいと思います。ChangeListenerが起動していません
ここはリスナーです。すべてが同じ方法である:ここでは
リスナーを追加し、いくつかのコードされています
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ステートメントの1つが実行されていませんでした。 System.out.println()を使用すると、メソッドが実行されていたが、コードの一部ではないことが証明された。 –