これを行う方法を探していましたが、This question without answersしか見つかりませんでした。JavaFX画面解像度スケーリング
私は1366x768ラップトップで開発していますが、JavaFXを使用してGUIを作成しています(申し訳ありませんが、コードを投稿することはできません。基本的には、LabelPanes 、TextFieldsといくつかのグラフ)。私は別の解像度(1920×1080または1600x900)にプロジェクトをロードするとき
問題が来ます。
私はstage.setMaximized(true);
を使用していますが、これは唯一の背景、舞台自体をスケーリングし、そのすべての要素とコンテナ(パネル、ラベル、テキストフィールドは.....)すること、を1366x768の解像度と同じサイズのままGUIは正確には1366x768ではない解像度では「適合しません」。
は、私は私の英語は完璧にはほど遠いですが、私は私の問題は、十分に説明願っています。
誰要素は、ステージの解像度に合わせて拡張可能にする方法上の任意の提案を持っていますか?
は(私はそう良い解決策のように見えるしていません)例えば、固定された解像度(を1366x768を作り、すべてのモニターで最大化するソフトウェアまたは全画面表示が必要)。
ありがとうございます。
更新:
私はほんの少しの例を作成しました。これは、デフォルトのJavaFX AnchorPane内の2x1 GridPaneです。グリッドペインに2つのButtonの例を追加しました。
<AnchorPane minHeight="-Infinity" minWidth="-Infinity" prefHeight="300.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" >
<children>
<GridPane prefHeight="300.0" prefWidth="400.0">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Button fx:id="example1" mnemonicParsing="false" text="Example 2" GridPane.halignment="CENTER" GridPane.valignment="CENTER" />
<Button fx:id="example2" mnemonicParsing="false" text="Example 2" GridPane.halignment="CENTER" GridPane.rowIndex="1" GridPane.valignment="CENTER" />
</children>
</GridPane>
</children>
私はを1366x768にそれを拡張する場合、このコードは(ない本当のフルスクリーンだけstage.setMaximized(true);
、)、400×300の画面(少なすぎると、私は知っている、それは一例です)に良さそうに見え、GridPaneスケール自体は無制限です。ステージ自体だけなので、画面の左上隅に400x300のペイン(小さなボタン付き)が表示されます。
TL; DR:ボタンは、画面の左上隅に滞在サンプルコード、および残りは私が解像度をスケールアップだけの空きスペースです。
アップデート2。 Javaコードを忘れました。
Parent root = FXMLLoader.load(getClass().getResource("UI.fxml"));
Scene scene = new Scene(root, java.awt.Toolkit.getDefaultToolkit().getScreenSize().width,
java.awt.Toolkit.getDefaultToolkit().getScreenSize().height);
stage = new Stage();
stage.setMaximized(false);
stage.setScene(scene);
stage.setTitle("Example Menu");
stage.show();
私はいくつかのコードを見ることなく助けることは不可能だと思います。レイアウトの問題、おそらくハードコードされた位置やサイズのように聞こえる。リンクされた質問のコメントを読んだことがありますか?同様の問題と思われます。 –
私は何もハードコードしていません。私は 'JavaFX SceneBuilder 2'を使ってすべてをやりました。サイズを見ると、すべて(Min、pref、max)には' USE_COMPUTED_SIZE'と書かれています。私はそれがコードを見ることなく助けるのは難しいと理解していますが、私はコードをオンラインに置くと、私は解雇されるかもしれませんが、私はそれを望んでいません、申し訳ありません。 :)助けてくれてありがとう:) – Tuzane
私は参照してください、あなたの仕事に関連していない、小さな、自己完結型の例をコードすることができますか?問題をシミュレートする1つまたは2つのコンポーネントを備えた単純な画面? –