この簡単な操作のための私のソリューション。私は動的にコンテンツを変更できるコントローラとコンテナを1つ使用しました。このソリューションでは、1つのVBoxでFXMLを作成し、ボタンをクリックした後にコンテンツを変更しました。
私はそうは思わないので、この場合はシーンを変更する必要があります。もちろん、James_Dを書いたように、もしあなたがこれをしたいなら、一つのFXML用に一つのコントローラーを持つべきです。
コントローラー:
public class PictureChange {
@FXML VBox vBox;
@FXML Button button;
@FXML private void initialize() {
ImageView v1 = new ImageView(new Image(this.getClass().getResource("/smallPic.png").toExternalForm()));
ImageView v2 = new ImageView(new Image(this.getClass().getResource("/smallPic.png").toExternalForm()));
ImageView v3 = new ImageView(new Image(this.getClass().getResource("/smallPic.png").toExternalForm()));
vBox.getChildren().addAll(v1, v2, v3);
}
@FXML private void changePictures() {
Image bigImage = new Image(this.getClass().getResource("/bigPic.png").toExternalForm());
ImageView vBig = new ImageView(bigImage);
vBox.getChildren().clear();
vBox.getChildren().add(vBig);
}
}
FXML:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.control.Button?>
<HBox prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1" fx:controller="picture.PictureChange">
<VBox fx:id="vBox">
</VBox>
<Button fx:id="button" text="Change Pictures" onAction="#changePictures"/>
</HBox>
すべてのFXMLファイルは、独自のコントローラクラス –
を持っている必要があり、@James_D、ありがとうございました。 –
なぜあなたは1つのコントローラでできないのですか?たとえば、VBoxのすべてを実行します。クリックした後、3つのImagesViewがあるVboxをクリアし、2つだけ追加します。この変更は動的です。 – BadVegan