由於某些原因,當我使用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