質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

1回答

610閲覧

貼った画像を同時進行で、指定したファイルに保存できる仕組みも作りたい

nakagen

総合スコア24

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2021/01/05 10:24

前提・実現したいこと

このコードで、ラベルに画像を張ったのですが、別の機能で作成するスライドショーに必要な写真でもあるため、同時進行で指定したファイルに保存できるできるようにしたいです。よろしくお願いいたします。

該当のソースコード

javafx

1 class meEventHandler implements EventHandler<ActionEvent>{ 2 public void handle(ActionEvent e3) { 3 stage4 = new Stage(); 4 lb = new Label(""); 5 ch1 = new CheckBox("水やり"); 6 ch2 = new CheckBox("晴れ"); 7 bt1 = new Button("設定"); 8 BorderPane bp =new BorderPane(); 9 VBox hb = new VBox(); 10 VBox hb1 = new VBox(); 11 hb.getChildren().add(ch1); 12 hb.getChildren().add(ch2); 13 hb.setAlignment(Pos.CENTER); 14 hb1.getChildren().add(lb); 15 hb1.getChildren().add(bt1); 16 hb1.setAlignment(Pos.CENTER); 17 bp.setLeft(hb); 18 bp.setCenter(hb1); 19 Scene sc = new Scene(bp, 400, 400); 20 stage4.setScene(sc); 21 stage4.show(); 22 bt1.setOnAction(ae -> { 23 FileChooser fileChooser = new FileChooser(); 24 FileChooser.ExtensionFilter imageFilter = new FileChooser.ExtensionFilter("画像ファイル", "*.bmp", "*.gif", "*.jpg", "*.jpeg", "*.png"); 25 fileChooser.getExtensionFilters().add(imageFilter); 26 File file = fileChooser.showOpenDialog(stage4); 27 if (file != null) { 28 lb.setGraphic(new ImageView(new Image(file.toURI().toString(), 0, 100, true, true))); 29//ここに入れるのですかね…? 30 } 31 32 33 //チェックボタンで、総水量と総日光量の計算が出来るようにする(なお、変数は総水量と総日光量と比べる基準とする) 34 //警告枠の作成 35 }); 36 } 37 }

補足情報(FW/ツールのバージョンなど)

jdk14

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

指定したファイルに保存できるできるようにしたい

指定したフォルダだとして回答します。

Java

1import java.io.File; 2import java.io.IOException; 3 4import javax.imageio.ImageIO; 5 6import javafx.application.Application; 7import javafx.embed.swing.SwingFXUtils; 8import javafx.event.ActionEvent; 9import javafx.event.EventHandler; 10import javafx.geometry.Pos; 11import javafx.scene.Scene; 12import javafx.scene.control.Button; 13import javafx.scene.control.CheckBox; 14import javafx.scene.control.Label; 15import javafx.scene.image.Image; 16import javafx.scene.image.ImageView; 17import javafx.scene.layout.BorderPane; 18import javafx.scene.layout.VBox; 19import javafx.stage.FileChooser; 20import javafx.stage.Stage; 21 22 23public class Main extends Application { 24 public static void main(String[] args) { launch(args); } 25 26 @Override public void start(Stage primaryStage) { 27 BorderPane root = new BorderPane(); 28 Button button = new Button("水やり"); 29 button.setOnAction(new meEventHandler()); 30 31 root.setCenter(button); 32 primaryStage.setScene(new Scene(root, 500, 400)); 33 primaryStage.show(); 34 } 35} 36 37class meEventHandler implements EventHandler<ActionEvent> { 38 public void handle(ActionEvent e3) { 39 Stage stage4 = new Stage(); 40 Label lb = new Label(); 41 CheckBox ch1 = new CheckBox("水やり"); 42 CheckBox ch2 = new CheckBox("晴れ"); 43 Button bt1 = new Button("設定"); 44 BorderPane bp = new BorderPane(); 45 VBox hb = new VBox(); 46 VBox hb1 = new VBox(); 47 hb.getChildren().add(ch1); 48 hb.getChildren().add(ch2); 49 hb.setAlignment(Pos.CENTER); 50 hb1.getChildren().add(lb); 51 hb1.getChildren().add(bt1); 52 hb1.setAlignment(Pos.CENTER); 53 bp.setLeft(hb); 54 bp.setCenter(hb1); 55 Scene sc = new Scene(bp, 400, 400); 56 stage4.setScene(sc); 57 stage4.show(); 58 bt1.setOnAction(ae -> { 59 FileChooser fileChooser = new FileChooser(); 60 FileChooser.ExtensionFilter imageFilter = new FileChooser.ExtensionFilter("画像ファイル", "*.bmp", "*.gif", "*.jpg", "*.jpeg", "*.png"); 61 fileChooser.getExtensionFilters().add(imageFilter); 62 File file = fileChooser.showOpenDialog(stage4); 63 if (file != null) { 64 Image image = new Image(file.toURI().toString(), 0, 100, true, true); 65 lb.setGraphic(new ImageView(image)); 66 67 String dir = "image\"; // 保存先フォルダ 存在しないとエラー 68 String fileName = file.getName(); // ファイル名 69 String ext = fileName.substring(fileName.lastIndexOf(".") + 1); // ファイル拡張子(.なし) 70 71 File output = new File(dir + fileName); 72 try { 73 ImageIO.write(SwingFXUtils.fromFXImage(image, null), ext, output); 74 } catch (IOException e) { 75 e.printStackTrace(); 76 } 77 } 78 }); 79 } 80}

投稿2021/01/06 09:01

TN8001

総合スコア9862

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問