6

我想知道如何将 ImageView 元素添加到 JavaFx 2.1 中的区域元素。

也许我把这个元素的用法弄错了,但 AFAIK 它也是子元素的容器。

背景是我需要一个定义大小的区域,该区域应显示独立于该区域视口的图像元素,因此我不能将 Group 元素用作容器。

4

1 回答 1

13

使用Pane或 Pane 子类。

窗格是Region ,您可以使用getChildren() api向其中添加子级。Pane 与Group非常相似;例如,有一个简单的 api 用于添加孩子,并且没有明确布局孩子的位置。它还具有区域的方面;例如 css 样式,可调整大小等。 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();
  }
}
于 2012-06-25T02:18:54.120 回答