我想知道如何将ImageView元素添加到JavaFx 2.1中的Region元素。
也许我得到这个元素的用法错了,但是AFAIK它也是子元素的容器。
背景是我需要一个定义大小的区域,它应该独立于区域上的视口显示图像元素,所以我不能将Group元素用作容器。
答案 0 :(得分:7)
使用Pane或Pane子类。
您可以使用Region api向其添加子项的getChildren()个窗格。窗格与Group非常相似;例如有一个简单的API用于添加孩子,并没有明确布局孩子的位置。它还有一个地区的方面;例如css styleable,resize able等。Region只有一个不可修改的子列表通过他们的公共API,这意味着添加子项的唯一方法是将它们子类化(就像Pane已经为你做的那样)。 Region类本身实际上只是控件创建者的构建块类,而不是在正常开发期间实例化的东西。
以下是将ImageView个节点添加到窗格的示例。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.*;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
public class RegionSample extends Application {
public static void main(String[] args) throws Exception { launch(args); }
public void start(Stage stage) throws Exception {
Pane pane = new Pane();
pane.setStyle("-fx-background-color: linear-gradient(to bottom right, derive(goldenrod, 20%), derive(goldenrod, -40%));");
ImageView iv1 = new ImageView(new Image("http://icons.iconarchive.com/icons/kidaubis-design/cool-heroes/128/Ironman-icon.png")); // Creative commons with attribution license for icons: No commercial usage without authorization. All rights reserved. Design (c) 2008 - Kidaubis Design http://kidaubis.deviantart.com/ http://www.kidcomic.net/ All Rights of depicted characters belong to their respective owners.
ImageView iv2 = new ImageView(new Image("http://icons.iconarchive.com/icons/kidaubis-design/cool-heroes/128/Starwars-Stormtrooper-icon.png"));
iv1.relocate(10, 10);
iv2.relocate(80, 60);
pane.getChildren().addAll(iv1, iv2);
stage.setScene(new Scene(pane));
stage.show();
}
}