Итак, я работаю над приложением javaFX и хочу создать несколько <ImageView>
, используя для l oop!
Возможно ли сделать для / foreach l oop в .f xml файл?
Если да, то как?
Также у меня есть еще один вопрос! как отправить данные с контроллера в файл sample.f xml? Например, я хочу отправить контроллер формы таблицы. java в файл sample.f xml и использовать эту таблицу + для l oop, чтобы сделать <ImageView>
в файле f xml!
Примечание: я использую f xml для отображения изображения, потому что я использую эти изображения в качестве кнопок.
Вот код образца.f xml:
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.image.Image?>
<GridPane fx:controller="sample.Controller"
xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
<ImageView fitHeight="120" fitWidth="120" fx:id="panda" GridPane.columnIndex="0" GridPane.rowIndex="0" onMousePressed="#mousePressed">
<image>
<Image url="@pics/panda.png">
</Image>
</image>
</ImageView>
</GridPane>
Вот код контроллера. java:
package sample;
import javafx.scene.input.MouseEvent;
import javafx.scene.media.AudioClip;
public class Controller {
public void play_audio()
{
AudioClip sound = new AudioClip(this.getClass().getResource("voices/panda.mp3").toString());
sound.play();
}
public void mousePressed() {
play_audio();
}
}
Код основного устройства. java:
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("Animal Sound");
Scene scene = new Scene(root, 790, 675);
scene.getStylesheets().add("sample/styles.css");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}