由于某些原因,当我使用Screen.getPrimary().getVisualBounds().getWidth());
打印我的笔记本电脑的分辨率宽度时,我得到了1920的正确结果。但是,如果我打印分辨率宽度,请在Windows中将分辨率更改为1680x1050设置,让线程等待一分钟,并使用相同的代码再次打印分辨率宽度,我得到1920而不是1680!但是,如果我停止了该项目,请将分辨率设置为1680x1050,然后编译并运行该项目,它会打印1680.换句话说,如果在项目运行时更改该项目,似乎该项目不会更新分辨率。JavaFX 8程序运行时屏幕分辨率不更新
下面是一些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)。感谢您的评论。我相应地更新了我的问题。 – Max