첨부 된 ChangeListerner가있는 간단한 JSlider가 있습니다. 당신이 볼 수 있듯이, 코드가 많이 안하고JSlider 이벤트 두 번 실행
JSlider slider = new JSlider();
slider.setMinorTickSpacing(2);
slider.setMajorTickSpacing(20);
slider.setPaintLabels(true);
slider.setPaintTicks(true);
slider.setSnapToTicks(true);
slider.setOrientation(SwingConstants.VERTICAL);
contentPane.add(slider, BorderLayout.CENTER);
slider.addChangeListener(new SliderListener());
class SliderListener implements ChangeListener {
public void stateChanged(ChangeEvent e) {
JSlider source = (JSlider)e.getSource();
if (!source.getValueIsAdjusting()) {
System.out.println("boo");
}
}
}
, 내가 지금하고 싶은 모든 이벤트가 한 번만 발사되어 있는지 확인하고, 따라서 내 이벤트가 뭔가를 인쇄하는 것입니다 : 여기에 코드는 Eclipse 내에서 Console로 이동하십시오.
그러나 위 코드는 슬라이더를 변경할 때마다 "부"를 두 번 인쇄합니다. 나는 이것이 Slider의 Mouse Release와 관련이 있다고 생각하지만, 그것이 무엇이든간에, 나는 이벤트를 한 번만 발사하고 단어를 한 번만 인쇄하기를 원한다.
어떻게하면됩니까?
감사합니다.
기본적으로이 슬라이더 만있는 프로그램을 만들려고했는데 문제가 중복 될 수 있는지 확인 했습니까? –
전체 코드를 여기에 넣으면 코드를 이해하는 것이 훨씬 낫습니다. –
@ PM77-1 내 전체 프로그램이 그 것입니다! 기본적으로 JSlider입니다. 나는 행동에 대한 좀 더 구체적인 정보를 알아 냈다. 슬라이더를 틱 레이블 사이의 위치로 이동하면됩니다. 코드가 업데이트되었습니다. – Ciwan