SceneBuilderでscrollPaneに画像やテキストを出力させたいです。
調べてみたところ、Groupを使えば良いとのことだったのですが、画像やテキストの追加や表示の仕方がわかりません。
TN8001が👍を押しています
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
Groupを使えば良いとのことだったのですが、
JavaFXはあまりわかっていないのですが、Group
はただグループ化するだけで重なってしまいませんか?
どういう表示のイメージかわかりませんが、基本的にはScrollPane
の中に何かしらのレイアウト(VBox
等)を入れ、その中にImageView
やText
を入れればいいと思います。
xml
1<?xml version="1.0" encoding="UTF-8"?> 2 3<?import javafx.scene.control.Button?> 4<?import javafx.scene.control.ScrollPane?> 5<?import javafx.scene.image.Image?> 6<?import javafx.scene.image.ImageView?> 7<?import javafx.scene.layout.BorderPane?> 8<?import javafx.scene.layout.VBox?> 9<?import javafx.scene.text.Text?> 10 11 12<BorderPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" 13 xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller"> 14 <top> 15 <Button mnemonicParsing="false" onAction="#onButton" text="add" BorderPane.alignment="CENTER"/> 16 </top> 17 <center> 18 <ScrollPane> 19 <content> 20 <VBox fx:id="vbox"> 21 <children> 22 <ImageView> 23 <image> 24 <Image url="https://teratail-v2.storage.googleapis.com/uploads/avatars/u17/171983/5c373ecbfa1165eb_thumbnail.jpeg"/> 25 </image> 26 </ImageView> 27 <Text text="Text"/> 28 <ImageView> 29 <image> 30 <Image url="https://teratail-v2.storage.googleapis.com/uploads/avatars/u13/132786/KnkDDC5A_thumbnail.jpg"/> 31 </image> 32 </ImageView> 33 </children> 34 </VBox> 35 </content> 36 </ScrollPane> 37 </center> 38</BorderPane>
Java
1package sample; 2 3import javafx.event.ActionEvent; 4import javafx.fxml.FXML; 5import javafx.scene.image.Image; 6import javafx.scene.image.ImageView; 7import javafx.scene.layout.VBox; 8import javafx.scene.text.Text; 9 10public class Controller { 11 private static final String url1 = "https://teratail-v2.storage.googleapis.com/uploads/avatars/u17/171983/5c373ecbfa1165eb_thumbnail.jpeg"; 12 private static final String url2 = "https://teratail-v2.storage.googleapis.com/uploads/avatars/u13/132786/KnkDDC5A_thumbnail.jpg"; 13 14 @FXML 15 private VBox vbox; 16 17 @FXML 18 void onButton(ActionEvent event) { 19 vbox.getChildren().add(new ImageView(new Image(url1))); 20 vbox.getChildren().add(new Text("Text")); 21 vbox.getChildren().add(new ImageView(new Image(url2))); 22 } 23}
Java
1package sample; 2 3import javafx.application.Application; 4import javafx.fxml.FXMLLoader; 5import javafx.scene.Parent; 6import javafx.scene.Scene; 7import javafx.stage.Stage; 8 9public class Main extends Application { 10 @Override 11 public void start(Stage primaryStage) throws Exception { 12 Parent root = FXMLLoader.load(getClass().getResource("sample.fxml")); 13 primaryStage.setScene(new Scene(root, 300, 275)); 14 primaryStage.show(); 15 } 16 17 public static void main(String[] args) { 18 launch(args); 19 } 20}
調べてみたところ、
調べたことを具体的に提示してください(見たURLや、自分で試したコード等)
「調べましたが」だけでは、第3者には全く伝わりません。
まだ読んでいなければこちらを一通り目を通してください。
質問するときのヒント|teratail(テラテイル)
投稿2020/11/06 15:20
編集2023/07/23 09:16総合スコア9862
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/07 03:10