我目前正在開發一個程序,它將發送一個介於100和355之間的值到串行端口,並帶有一個Arduino連接到rgb LED燈帶。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();
}
}
發送數據很可能不會造成凍結。應用程序是否也在Swing事件線程上接收數據? –
............................你好? –