В настоящее время я разрабатываю программу, которая будет отправлять значение между 100 и 355 в последовательный порт с помощью Arduino, связанного с полосками rgb.JSlider freezes program
Программа работает нормально, но затем внезапно замерзает, и я не могу перемещать ползунки или нажимать на любую из кнопок.
Я считаю, что это связано с тем, что программа обрабатывает слишком много событий, потому что, если я медленно перемещаю ползунки, эта проблема происходит не так часто, но я не знаю, как уменьшить количество событий, активируемых слайдером.
Вот мой код для слайдера:
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? –
............................ привет ??? –