JavaFX TextField.setOnKeyПрессованное изменение поведения в Ubuntu 18.04 - PullRequest
0 голосов
/ 20 декабря 2018

Я заметил, что 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)?Какое поведение правильное?

...