gpt4 book ai didi

java - ChangeListener 没有触发

转载 作者:行者123 更新时间:2023-12-04 05:53:09 26 4
gpt4 key购买 nike

我正在学习更改监听器,并想了解为什么我的部分代码在用户移动 slider 时没有触发更改监听器。

这里是听者。一切都在同一个方法中:

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);

此代码基于上述代码块,但当用户移动 slider 时没有任何 react :
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() 中的评论所指出的,您的代码部分似乎有问题。方法,这个东西在这段代码中完美地工作:

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class SliderChangeEffect extends JFrame
{
private JSlider slider;
private int count = 0;
private ChangeListener changeListener = new ChangeListener()
{
public void stateChanged(ChangeEvent ce)
{
System.out.println(count++);
}
};

private void createAndDisplayGUI()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationByPlatform(true);

JPanel contentPane = new JPanel();
contentPane.setOpaque(true);

slider = new JSlider(0, 10, 5);
slider.setMajorTickSpacing(2);
slider.setMinorTickSpacing(1);
slider.addChangeListener(changeListener);

contentPane.add(slider);

getContentPane().add(contentPane);
pack();
setVisible(true);
}

public static void main(String... args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new SliderChangeEffect().createAndDisplayGUI();
}
});
}
}

关于java - ChangeListener 没有触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9824639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com