【发布时间】:2017-04-07 21:18:15
【问题描述】:
由于某种原因,当我使用 Screen.getPrimary().getVisualBounds().getWidth()); 打印笔记本电脑的分辨率宽度时,我得到了 1920 的正确结果。但是如果我打印分辨率宽度,请在 Windows 设置中将分辨率更改为 1680x1050,让线程稍等片刻,并使用相同的代码再次打印分辨率宽度,我得到 1920 而不是 1680!但是,如果我停止项目,将分辨率设置为 1680x1050,然后编译并运行项目,它会打印 1680。换句话说,如果我在项目运行时更改分辨率,项目似乎不会更新分辨率。
下面是一些 JavaFX 代码来说明我的意思。如果我运行下面的代码,观察它打印 1920,快速更改分辨率,等到线程完成睡眠,然后如前所述,它仍然会打印 1920 而不是新的分辨率宽度。
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
System.out.println(Screen.getPrimary().getVisualBounds().getWidth());
Thread.sleep(60000);
System.out.println(Screen.getPrimary().getVisualBounds().getWidth());
}
public static void main(String[] args) { launch(args); }
}
【问题讨论】:
-
你在最新版本的 JavaFX 上试过这个吗?
-
原来我使用的是 JavaFX 8(出于某种原因,IntelliJ 将其称为 JavaFX 2.0)。感谢您的评论。我相应地更新了我的问题。
标签: java javafx java-8 javafx-8 screen-resolution