何らかの理由で、Screen.getPrimary().getVisualBounds().getWidth());
を使用してラップトップの解像度幅を印刷すると、1920年の結果が正しく表示されます。ただし、解像度幅を印刷すると、解像度は1680x1050設定をして、1分待つようにスレッドに依頼し、同じコードを使用して解像度の幅を再度印刷すると、1680ではなく1920になります!しかし、私がプロジェクトを停止し、解像度を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