JavaFX不同分辨率的舞台宽度问题

时间:2016-03-25 08:25:51

标签: javafx

我在我的电脑上制作了一个JavaFX应用程序并修改了它的大小。当我在我的Macbook上构建它时,窗口被扭曲了,我不得不增加宽度以使它看起来还不错。它没有达到笔记本电脑的界限,所以它不是没有足够像素的问题。有人可以告诉我这里的问题是什么,如何在所有分辨率上使固定大小看起来相同?谢谢。

编辑:

@Override
public void start(Stage primaryStage) throws Exception{
    FXMLLoader fxmlLoader = new FXMLLoader();
    Pane root = fxmlLoader.load(getClass().getResource("main.fxml"));

    initializeStuff();
    primaryStage.setTitle("Title comes here");
    primaryStage.setScene(new Scene(root, 800, 800));
    primaryStage.setResizable(false);
    primaryStage.show();
}

根面板:

<VBox xmlns="http://javafx.com/javafx/null" xmlns:fx="http://javafx.com/fxml/1" stylesheets="/sample/style.css" fx:controller="sample.mainController">
    <fx:include source="/sample/menubar/MenuBar.fxml" fx:id="menuBar"/>

</VBox>

1 个答案:

答案 0 :(得分:0)

问题不是每个屏幕都相同Pixel Density.您将场景定义为800x800并禁用调整大小。这可能适用于您的PC,但您的Macbook有不同的pixel density,这基本上意味着您在该显示器上每英寸有更多/更少的像素。

之前我的应用程序遇到了同样的问题。还使大小静态和禁用大小调整。但是当在另一台笔记本电脑上使用Windows 7Windows 8时,它完全失真了。

解决方案是尝试以最佳方式使用您的布局。不要静态地布置所有内容并定义像素边距。使用JavaFX's提供的布局并使用其min/preferred/max height/width属性。