6

JavaFx2.1でImageView要素をRegion要素に追加する方法を知りたいです。

この要素の使用法が間違っているかもしれませんが、AFAIKは子要素のコンテナでもあります。

背景には、領域のビューポートとは関係なく画像要素を表示する定義済みのサイズの領域が必要であるため、Group要素をコンテナとして使用できません。

4

1 に答える 1

13

PaneまたはPaneサブクラスを使用します。

ペインは、 getChildren() APIを使用して子を追加できるリージョンです。ペインはグループと非常によく似ています。たとえば、子を追加するための単純なAPIがあり、子の場所を明示的にレイアウトしていません。また、地域の側面もあります。たとえば、cssのスタイル設定、サイズ変更が可能など。リージョンには、パブリックAPIを介して変更できない子のリストしかありません。つまり、子をサブクラス化する唯一の方法は、子をサブクラス化することです(ペインが既に行っているように)。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 に答える