mac*_*110 27 windows combobox javafx javafx-8 windows-10
我最近升级到Windows 10,在Windows 8.1中运行的JavaFX代码似乎在10中冻结.我已经跟踪了在对话框中打开ComboBox的问题.这似乎冻结了任何JavaFX程序.还有其他人有同样的问题吗?(Windows 10计算机仍然很少,所以很好地确认bug确实是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();
}
}
Run Code Online (Sandbox Code Playgroud)
Pin*_*ing 17
根据错误报告,临时解决方法是设置以下系统属性:
java -Dglass.accessible.force=false ...
Run Code Online (Sandbox Code Playgroud)
或者,在应用程序的代码中:
System.setProperty("glass.accessible.force", "false");
Run Code Online (Sandbox Code Playgroud)
或者,或者,"运行Windows讲述人屏幕阅读器(启用辅助功能)".
该错误似乎已在JDK 8u40中引入,并影响安装并启用了触摸屏的Windows 10系统.
一些快速测试似乎表明它解决了我的问题.
正如其他答案中所提到的,这可能与英特尔图形处理器有关,并且似乎无法通过驱动程序更新解决.
然而,虽然这个bug 有望被修复,但现在我建议添加一个事件,将鼠标按下的组合框聚焦,从而解决问题.只需添加以下代码:
comboBox.setOnMousePressed(new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent event) {
comboBox.requestFocus();
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5317 次 |
| 最近记录: |