gpt4 book ai didi

java - 解决在 SWT FXCanvas 中嵌入 JavaFX 时的 DPI 缩放问题

转载 作者:太空宇宙 更新时间:2023-11-04 10:41:28 28 4
gpt4 key购买 nike

我有一个 Eclipse-RCP 项目,需要在 SWT 部件/窗口中使用 JavaFX 控件和组件。我将这些控件包含在一个简单的部分中,该部分将 JavaFX 组件包装在 FXCanvas 中。但是,当我在启用了字体缩放的高 DPI 屏幕的计算机上运行该应用程序时,FXCanvas 的内容呈现得比 SWT 部分的内容更小(且更模糊)。另请注意,JavaFX 警报(位于纯 JavaFX 阶段,而不是在 FX-Canvas 内)甚至比 FXCanvas

的内容还要小

high-dpi screenshot

为了进行比较,相同的应用程序在正常 DPI 屏幕上运行并且没有字体缩放,如下所示:

normal-dpi screenshot

我的 FXCanvasPart 代码如下:

public class FXCanvasPart {

private FXCanvas fxCanvas;
private Label label;
private Button jfxButton;

@PostConstruct
public void postConstruct(final Composite parent) {

fxCanvas = new FXCanvas(parent, SWT.NONE);
final BorderPane root = new BorderPane();

label = new Label("This is an FX Label.");
root.setTop(label);

jfxButton = new Button("This is an FX button.");
root.setCenter(jfxButton);

final Scene scene = new Scene(root);
fxCanvas.setScene(scene);
}
}

SWT 部分同样简单:

public class SWTPart {

private Label label;
private Button button;

@PostConstruct
public void createComposite(Composite parent) {
parent.setLayout(new GridLayout(1, false));

label = new Label(parent, SWT.NULL);
label.setText("This is an SWT text label.");

button = new Button(parent, SWT.NONE);
button.setText("This is an SWT button.");

}
}

使用以下处理程序通过应用程序的菜单项打开 JavaFX 对话框:

public class OpenDialogHandler {
@Execute
public void execute(Shell shell) {
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("A JavaFX dialog");
alert.setHeaderText("Header text");
alert.setContentText("This is a JavaFX Alert dialog.");
alert.showAndWait();
}
}

我上传了zip file完整的 Eclipse 项目演示了这个问题,如果这样可以更容易地研究这个问题。

有人能告诉我发生了什么事以及如何解决这个问题吗?谢谢!

这两个示例都是在 Windows 10 上使用 JDK 9.0.4 运行的。顺便说一句,当在具有高 DPI 屏幕的计算机上使用 JDK 8 时,FXCanvas 文本较大,但纯 FX 对话框的大小正确:

high-DPI Java 8 screenshot

最佳答案

这是一个已知问题: https://bugs.openjdk.java.net/browse/JDK-8191661

直到几个版本之后才可能修复。

关于java - 解决在 SWT FXCanvas 中嵌入 JavaFX 时的 DPI 缩放问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48936937/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com