私は現在、アルジノがrgb ledストリップに接続されたシリアルポートに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();
}
}
送信データがフリーズの原因ではない可能性があります。アプリケーションはSwingイベントスレッドのデータも受け取っていますか? –
............................こんにちは? –