JavaFX ボタンを押すと画像が表示される
JavaFXで画像を表示する方法を学んだので、ボタンを押すと画像が表示されるアプリを作りました。
この猫さんの画像は、
無料の写真: 猫, かわいい, ペット, 動物, 赤いマッカレルタビー, 居眠りする - Pixabayの無料画像 - 3183742
から利用しました。
ラベルのバックグラウンドに画像を埋め込んでいるので、ボタンが押されたら、ラベルのテキストを初期化する必要がありました。
import java.nio.file.Path; import java.nio.file.Paths; import javafx.application.Application; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.image.Image; import javafx.scene.layout.Background; import javafx.scene.layout.BackgroundImage; import javafx.scene.layout.VBox; import javafx.scene.text.Font; import javafx.stage.Stage; public class Display extends Application{ private Label label; private Button btnOk; @Override public void start(Stage stage) throws Exception { stage.setTitle("MyButton"); stage.setWidth(600); stage.setHeight(600); //ラベルの設定 label = new Label("画像"); label.setFont(new Font(200)); //ボタンの機能 btnOk = new Button("ボタン"); btnOk.setPrefWidth(120); btnOk.setOnAction(event -> setLabelImage()); //配置 VBox root = new VBox(); root.setAlignment(Pos.CENTER); root.setPadding(new Insets(10, 10, 10, 10)); root.setSpacing(20.0); root.getChildren().addAll(label, btnOk); stage.setScene(new Scene(root)); stage.show(); } void setLabelImage(){ //画僧の設定 Path path = Paths.get("cat.jpg"); Image img = new Image(path.toUri().toString()); BackgroundImage bimg = new BackgroundImage(img, null, null, null, null); Background bg = new Background(bimg); label.setMinSize(img.getWidth(), img.getHeight()); label.setBackground(bg); label.setBackground(bg); //labelの文字を初期化 label.setText(""); } public static void main(String[] args) { launch(args); } }