###JFileChooser+Serializableを使った「名前をつけて保存」の実装
複雑なことをお聞きします。長文です。最初にコードとダイアログの画像を見た方がいいかもしれません。それらは一番下にありますので参考までに・・・
題目通り、私はいわゆる「名前をつけて保存」を実装したいと思っています。(ここでの「保存」はSwingのGUI自体の状態保存で、特定のテキストファイルや画像データではありません。)
しかし、二つの問題があって、いまだ目標に達していません。
一つ目は「JFileChooser
のダイアログで入力したファイル名」を得る手段がないということです。
「新規保存させるためのファイル名」を得ないことにはデータの保存もあったものではないのですが、oracleのサイトを見ても、それらしいメソッドはありませんでした。
二つ目。これは一つ目の問題の解決で発生すると予想される問題なのですが、FileOutputStream fos = new FileOutputStream();
の引数に指定する変数です。
というのも侍エンジニアのサイトのサイトを見ると、FileOutputStream
の引数には、(path/ファイル名)
を入れるとあります。
しかし、「JFileChooser
のダイアログのディリクトリ」と「JFileChooser
のダイアログで入力したファイル名」をゲットしても、それをどのようにFileOutputStream()
に指定すればいいのか・・・推測もできません。
言葉ではどうにも説明が上手くいかないので下に未完成のコードを記します。
解決策、代替策、ささいなことでも構いません。
ご助言いただけたら助かります・・・・
java
1mntmSave.addActionListener(new ActionListener() {//新規保存ボタンを押したら 2 @Override 3 public void actionPerformed(ActionEvent e) { 4 File dir = new File("C:\Users\foods\Desktop"); 5 JFileChooser filechooser = new JFileChooser(dir);//Desktopを初期表示に設定。 6 7 int selected = filechooser.showSaveDialog(Main.this);//セーブダイアログの表示 8 if (selected == JFileChooser.APPROVE_OPTION){ 9 try{ 10 File path = filechooser.getCurrentDirectory();//カレントディリクトリをゲット。 11 ?//ここで新規保存させるためのファイル名を得たい 12 FileOutputStream fos = new FileOutputStream(?);//fileoutputstreamの引数には、path/ファイルと指定するはずなのに・・・どのように指定すれば? 13 //入手したカレントディリクトリとファイル名を組み合わせる? 14 ObjectOutputStream objOutStream = new ObjectOutputStream(fos); 15 objOutStream.writeObject(new Main());//保存したいオブジェクトを書き込む。 16 objOutStream.close(); 17 18 }catch (FileNotFoundException e1) { 19 e1.printStackTrace(); 20 } catch (IOException e1) { 21 e1.printStackTrace(); 22 } 23 }else if (selected == JFileChooser.CANCEL_OPTION) { 24 25 }else if (selected == JFileChooser.ERROR_OPTION) { 26 27 } 28 29 } 30 });
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/29 21:37