현재 저는 rgb led 스트립과 연결된 Arduino가있는 직렬 포트에 100에서 355 사이의 값을 보내는 프로그램을 개발 중입니다.JSlider 프로그램이 멈 춥니 다
프로그램이 조금은 정상적으로 작동하지만 갑자기 멈추고 슬라이더를 움직이거나 아무 버튼이나 클릭 할 수 없습니다.
나는 슬라이더를 천천히 움직이면이 문제가 자주 발생하지 않기 때문에 프로그램에서 너무 많은 이벤트를 처리하기 때문에 발생한다고 생각하지만 슬라이더에 의해 활성화 된 이벤트의 양을 줄이는 방법을 모르겠습니다.
redslide.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent arg0) {
try {
output.flush();
} catch (IOException e1) {
e1.printStackTrace();
}
int brightness = redslide.getValue();
String message = "r" + brightness;
byte[] data = message.getBytes();
try {
output.write(data);
} catch (IOException e) {
e.printStackTrace();
}
}
});
여기
가 내 새로운 코드 :
redslide.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent arg0) {
int brightness = redslide.getValue();
String message = "r" + brightness;
byte[] data = message.getBytes();
new Thread(() -> Write(data)).start();
}
});
public static void Write(byte[] data){
try {
output.write(data);
} catch (IOException e) {
e.printStackTrace();
}
}
송신 데이터가 동결을 일으키지 않는 것 같다. 응용 프로그램도 * 스윙 이벤트 스레드에서 * 데이터를 받고 있습니까? –
............................ hello ?? –