ich zur Zeit ein Programm entwickle, die einen Wert zwischen 100 und 355 an einen seriellen Anschluss mit einem Arduino verbunden mit RGB-LED-Streifen schicken.JSlider friert Programm
Das Programm arbeitet für ein wenig in Ordnung, aber dann friert plötzlich und ich kann keinen Schieber bewegen oder auf eine der Schaltflächen klicken.
Ich glaube, das liegt daran, dass das Programm zu viele Ereignisse verarbeitet, denn wenn ich die Schieber langsam bewege, passiert dieses Problem nicht so häufig, aber ich weiß nicht, wie ich die Anzahl der vom Schieberegler aktivierten Ereignisse verringern kann.
Hier ist mein Code für einen Schieber:
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();
}
}
});
hier ist mein neuer Code:
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();
}
}
Senden von Daten geeignet ist, das Einfrieren nicht verursacht. Empfängt die Anwendung auch * Daten vom Swing Event-Thread? –
............................ Hallo? –