windows - JavaFX ComboBox 在 Windows 10 上没有响应

标签 windows combobox javafx javafx-8 windows-10

我最近升级到 Windows 10,在 Windows 8.1 中运行的 JavaFX 代码似乎在 10 中卡住了。我已将问题追溯到在对话框中打开 ComboBox。这似乎会卡住任何 JavaFX 程序。还有其他人有同样的问题吗? (Windows 10 计算机仍然很少,所以最好确认错误确实是 JavaFX 问题)

我在下面附上了示例代码。主舞台中的 ComboBox 很好,但是当我打开一个对话框并尝试在那里使用 ComboBox 时,整个过程都卡住了。我在 Eclipse 4.4.0 中使用 Java 8u51

package javafxExamples;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ChoiceDialog;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class ComboErrorTest extends Application {

String[] list={"Jamie", "Arthur", "Gordon"};

private Stage stage;

public static void main(String[] args) {
    launch(args);
}


@Override
public void start(Stage stage) throws Exception {
    //create box in main stage.
    ComboBox<String> comboBox=new ComboBox<String>(); 
    for (int i=0; i<list.length; i++){
        comboBox.getItems().add(list[i]);
    }
    comboBox.getSelectionModel().select(list[0]);

    BorderPane pane = new BorderPane(comboBox);
    pane.setPrefSize(400, 250);

    //dialog bit
    List<String> choices = new ArrayList<>();
    choices.add("a");
    choices.add("b");
    choices.add("c");

    ChoiceDialog<String> dialog = new ChoiceDialog<>("b", choices);
    dialog.setTitle("Choice Dialog");
    dialog.setHeaderText("Look, a Choice Dialog");
    dialog.setContentText("Choose your letter:");


    Button dialogButton=new Button("Open Dialog...");
    dialogButton.setOnAction((action)->{
        // Traditional way to get the response value.
        Optional<String> result = dialog.showAndWait();
        if (result.isPresent()){
            System.out.println("Your choice: " + result.get());
        }
    });

    pane.setBottom(dialogButton);

    Scene scene = new Scene(pane);

    stage.setTitle("ComboError Demo");
    stage.setScene(scene);
    stage.show();

}

}

最佳答案

根据bug report ,临时解决方法是设置以下系统属性:

java -Dglass.accessible.force=false ... 

或者,在应用程序的代码中:

System.setProperty("glass.accessible.force", "false");

或者,“运行 Windows 讲述人屏幕阅读器(启用辅助功能)”。

该错误似乎已在 JDK 8u40 中引入,并影响安装并启用了触摸屏的 Windows 10 系统。

一些快速测试似乎表明它为我解决了问题。

关于windows - JavaFX ComboBox 在 Windows 10 上没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31786980/

相关文章:

python - Tkinter 组合框 - 单击小部件时优雅地失去焦点

java游戏如何构造定时效果/定距效果?

python - 如何将 python 2.7 功能设置为 Python 2.6?

c++ - 如何在透明背景上绘制PNG?

windows - 处理 .net 核心中的窗口锁定/解锁事件

WPF:强制大写的组合框?

WPF ComboBox-选择值时显示不同的内容

android - 如何使内联函数在可执行文件中只占用一份内存空间

java - 按下按钮后等待点击输入Javafx

java - 使用按钮关闭 JavaFX 中的对话框