我的問題很簡單:在JavaFX中,Pane
和Group
之間有什麼區別?我無法做出任何改變。窗格和組之間的區別
13
A
回答
21
A Group
不可調整大小(意味着它的大小不由其父節點在場景圖中進行管理),並且接受其子節點邊界的並集。 (換句話說,Group
的局部邊界將是包含所有子節點邊界的最小矩形)。如果它大於它在其父文件中分配的空間,它將被剪輯。
相比之下,Pane
是可調整大小的,所以它的大小由它的父親設置,這基本上決定了它的邊界。
這是一個快速演示。下面是Group
的頂部和Pane
。兩者都包含一個固定的藍色方塊(100,100)
和一個綠色方塊,通過按左/右箭頭鍵移動。請注意,開始時藍色方塊出現在組的左上角,因爲組的局部邊界從其所有子節點的最左上角開始(即,組的局部邊界從右邊的(100, 100)
延伸和下)。隨着您將綠色矩形「屏幕外」移動,該組將調整其邊界,以儘可能合併所做的更改,而窗格保持不變。
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.Pane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class GroupVsPaneDemo extends Application {
@Override
public void start(Stage primaryStage) {
Pane pane = new Pane();
Group group = new Group();
VBox.setVgrow(group, Priority.NEVER);
VBox.setVgrow(pane, Priority.NEVER);
VBox vbox = new VBox(group, pane);
Rectangle rect1 = new Rectangle(100, 100, 100, 100);
Rectangle rect2 = new Rectangle(100, 100, 100, 100);
Rectangle rect3 = new Rectangle(200, 200, 100, 100);
Rectangle rect4 = new Rectangle(200, 200, 100, 100);
rect1.setFill(Color.BLUE);
rect2.setFill(Color.BLUE);
rect3.setFill(Color.GREEN);
rect4.setFill(Color.GREEN);
group.getChildren().addAll(rect1, rect3);
pane.getChildren().addAll(rect2, rect4);
Scene scene = new Scene(vbox, 800, 800);
scene.addEventHandler(KeyEvent.KEY_PRESSED, e -> {
double deltaX ;
switch(e.getCode()) {
case LEFT:
deltaX = -10 ;
break ;
case RIGHT:
deltaX = 10 ;
break ;
default:
deltaX = 0 ;
}
rect3.setX(rect3.getX() + deltaX);
rect4.setX(rect4.getX() + deltaX);
});
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
4
窗格和集團之間的一些重要的不同之處在於:
- 窗格可以有自己的大小,其中一個小組將在其子的集體邊界和是不直接調整大小。
- 當您想將其節點放置在絕對位置時可以使用窗格。
+0
我想你也可以使用一個組來定位它的子節點在絕對位置('layoutX'和'layoutY'參數工作)。 – gbmhunter
0
此外,請注意,組被設計爲非常輕量級,並且不支持很多樣式。例如,您不能爲組設置邊框或背景顏色。
查看this answer瞭解更多詳情。
相關問題
- 1. 窗口和ViewController之間的區別
- 2. rm和mp3格式之間的區別
- 3. 在數組的窗口上pandas rolling_std和np.std之間的區別
- 4. 選項卡式窗格中setModel()和getModel()之間的區別
- 5. 內容窗格和擺動之間的區別?
- 6. ==和=== WRT數組之間的區別?
- 7. 數組和堆棧之間的區別?
- 8. 繼承和組成之間的區別?
- 9. Bootstrap CSS和組件之間的區別
- 10. 依賴和組成之間的區別?
- 11. JavaFX-2:場景和窗格之間有什麼區別
- 12. 之間的〜/和的區別../
- 13. '#','%'和'$'之間的區別
- 14. {!!之間的區別!!}和{{}}
- 15. '+ ='和'= +'之間的區別?
- 16. 「。+」和「。+?」之間的區別
- 17. .eq之間的區別。和==
- 18. #。/和#之間的區別。 ./
- 19. !=和!之間的區別==
- 20. 「%〜dp0」和「。\」之間的區別?
- 21. | =和^ = css之間的區別
- 22. 之間的區別。和#
- 23. ==和case之間的區別?
- 24. 「**/* /」和「** /」之間的區別?
- 25. jQuery - '。'之間的區別和「#」
- 26. 「?1」和「?」之間的區別
- 27. `%in%`和`==`之間的區別
- 28. fmod和%之間的區別
- 29. 之間的區別:+和:+
- 30. 輸入組和組別之間的區別
非常感謝你!你的演示是完美的。 – Florian