簡體   English   中英

元素的位置 - JavaFX 中的 GridPane

[英]Positon of element - GridPane in JavaFX

我是初級學生 java 開發人員,我必須在 java fx 中創建簡單的游戲。 我想學習這個,而不是使用模板或游戲另一個作者。 我在使用 GridPane 時遇到問題。 所以我的應用程序中有 8 個元素。 文本、標簽和圖像,但我的問題是在舞台上安排元素。 例如,如果我嘗試定位一個元素,其他元素丟失了位置。 我做錯了什么?

代碼:

    grid.setHgap(20);
    grid.setVgap(20);
    grid.setPadding(new Insets(10, 10, 10 ,10));
    grid.add(welcome, 10, 0);

順便提一句。 gridPane 適合簡單的跳棋游戲嗎? 謝謝

因此,您已經在每一列和每一行上設置了填充,這意味着網格中每個元素的所有邊都有 10 像素的空間。 然后您在第 10 列中添加了一些內容。 這將創建所有 0-9 列,寬度和高度為 0,因為它們沒有內容。 但是,由於它們的填充,它們每個都占用大約 20x20 像素的正方形。 當您向這些空間添加東西時,它們當然會將您的welcome對象移過來,因為它們現在正在占用空間。

不要使用填充來創建列和行的寬度和高度, RowConstraints考慮ColumnConstraintsRowConstraints 我在下面添加了他們使用的文檔。

GridPane 文檔

行/列大小調整

默認情況下,行和列的大小將適合其內容; 一列的寬度足以容納最寬的孩子,一行的高度足以容納最高的孩子。但是,如果應用程序需要顯式控制行或列的大小,則可以通過添加 RowConstraints 和 ColumnConstraints 對象來指定那些指標。 例如,要創建具有兩個固定寬度列的網格:

GridPane gridpane = new GridPane();
gridpane.getColumnConstraints().add(new ColumnConstraints(100)); // column 0 is 100 wide
gridpane.getColumnConstraints().add(new ColumnConstraints(200)); // column 1 is 200 wide

默認情況下,網格窗格會將行/列的大小調整為其首選大小(根據內容計算或固定),即使網格窗格的大小調整為大於其首選大小。 如果應用程序需要在有額外空間的情況下增長特定行或列,則可以在 RowConstraints 或 ColumnConstraints 對象上設置其增長優先級。 例如:

GridPane gridpane = new GridPane();
ColumnConstraints column1 = new ColumnConstraints(100,100,Double.MAX_VALUE);
column1.setHgrow(Priority.ALWAYS);
ColumnConstraints column2 = new ColumnConstraints(100);
gridpane.getColumnConstraints().addAll(column1, column2); // first column gets any extra width

注意:跨越多行/多列的節點的大小也將設置為首選大小。 受影響的行/列按以下優先級調整大小:增長優先級,最后一行。 這是關於行/列約束。

百分比大小

或者,RowConstraints 和 ColumnConstraints 允許將大小指定為 gridpane 可用空間的百分比:

 GridPane gridpane = new GridPane();
 ColumnConstraints column1 = new ColumnConstraints();
 column1.setPercentWidth(50);
 ColumnConstraints column2 = new ColumnConstraints();
 column2.setPercentWidth(50);
 gridpane.getColumnConstraints().addAll(column1, column2); // each get 50% of width

如果在行/列上設置了百分比值,則該值優先,行/列的 min、pref、max 和增長約束將被忽略。 請注意,如果 widthPercent(或 heightPercent)值的總和大於 100,則這些值將被視為權重。 例如,如果 3 列每列的 widthPercent 為 50,則每列將分配網格窗格可用寬度的 1/3 (50/(50+50+50))。

混合尺寸類型

應用程序可以自由混合行/列的大小類型(根據內容、固定或百分比計算)。 百分比行/列將始終首先根據網格窗格可用空間的百分比(大小減去插圖和間隙)分配空間。 剩余空間將根據行/列的最小、首選和最大大小以及增長優先級分配給行/列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM