Я заметил, что JavaFX ведет себя по-разному после обновления до Ubuntu 18.04.У меня есть небольшая программа, чтобы проиллюстрировать эту проблему:
package sample;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
primaryStage.setTitle("Key Pressed");
Group root = new Group();
Scene scene = new Scene(root, 300, 275);
TextField textField = new TextField();
textField.setOnKeyPressed(e -> System.out.println("KeyPressed: " + textField.getText()));
textField.setOnKeyReleased(e -> System.out.println("KeyReleased: " + textField.getText()));
root.getChildren().add(textField);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Я скомпилировал эту программу и запустить на Ubuntu 16.04 Oracle Java 1.8.0_152, Ubuntu 18.04 Java 1.8.0_152, Ubuntu 18.04 Java 1.8.0_192, Windows 10Java 1.8.0_161, и набрав 'abcd' (без кавычек) в текстовое поле.
Когда я запускаю его в Ubuntu 16.04 и Windows 10, получается
KeyPressed:
KeyReleased: a
KeyPressed: a
KeyReleased: ab
KeyPressed: ab
KeyReleased: abc
KeyPressed: abc
KeyReleased: abcd
Но когда я запускаю программу в Ubuntu 18.04, вывод
KeyReleased: a
KeyReleased: ab
KeyReleased: abc
KeyReleased: abcd
Почему разница одной и той же Java-программы на разных ОС (даже с одинаковой версией jre)?Какое поведение правильное?