• ベストアンサー

showSaveDialogを使ったファイルの保存

TextAreaに表示(入力)してあるものをタイトルのとおりjavax.swingのJFileChooserクラスのshowSaveDialog を使ってファイルに保存したいのですが肝心の showSaveDialogの使い方がいまいち分からず困っていま す。 できればサンプルも教えていただけると大変助かります また、そんな方法よりもっと簡単な方法があればそちらも教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.3

間に合わせ程度に今作ったサンプルです。 大体の流れはこんな感じですが、もちろんこれで完璧と言うわけではないので、適宜作り変えるなり何なりしてください。 java.io パッケージのインポートをお忘れなく。 public void actionPerformed(ActionEvent e){ JFileChooser chooser = new JFileChooser(); if (chooser.showSaveDialog(mainFrame) == JFileChooser.APPROVE_OPTION) { try { File file = chooser.getSelectedFile(); Writer out = new OutputStreamWriter(new FileOutputStream(file), "utf-8"); out.write(outputArea.getText()); out.close(); } catch (IOException exc) { } } }

mig2009
質問者

お礼

わざわざありがとうございます

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.2

JFileChooser がやってくれることはあくまでもダイアログを表示してユーザーにファイル名を入力させるところまでです。ファイルにデータを出力するための処理はプログラマが自分で書かないといけません。 ファイルにデータを書き込むには、java.io パッケージにあるクラス (FileWriter など) を使います。 // サンプルが要りますか?

mig2009
質問者

お礼

ファイルに書き込むには別のクラスを使う必要があったんですね。そこまでは見ていませんでした。 サンプルはぜひほしいです。

すると、全ての回答が全文表示されます。
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.1

「いまいち分からず」と言われても、何がどう分からないのか分からない……。「いまいち」ということは、少しくらいは分かるんですよね? 何が分かって何が分からないのかはっきりしていただかないと、答えるほうも何を答えていいのか分からないのです。 ところで、API ドキュメントはちゃんと読んでいますよね? API ドキュメントを読めば JFileChooser の使い方に関する(ほぼ)全てがわかるはずです。サンプルだって載っていましたよ。

参考URL:
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/javax/swing/JFileChooser.html
mig2009
質問者

補足

具体的な説明が足らずご迷惑をおかけしました。 APIドキュメントはちゃんと呼みながらプログラムをかいています。 テキストエリアに表示されているものをそのままtxtファイルとして保存したいのですが、ファイルが作成されないのです。 以下のプログラムのFileSaveActionクラスの中身を教えていただきたいのです 以下プログラムソース import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class Meibo { JFrame mainFrame; JTextField nameField; JTextArea outputArea; Vector nameList = new Vector(); Meibo(){ mainFrame = new JFrame("名簿"); JPanel cp = (JPanel)(mainFrame.getContentPane()); JLabel nameLabel = new JLabel("名称:"); nameField = new JTextField(20); JPanel namePane = new JPanel(new BorderLayout()); namePane.add(nameLabel, BorderLayout.WEST); namePane.add(nameField, BorderLayout.EAST); JPanel inputPane = new JPanel(new BorderLayout()); inputPane.add(namePane, BorderLayout.NORTH); JPanel buttonPane = new JPanel(new GridLayout(1,1)); JButton addButton = new JButton("追加"); addButton.addActionListener(new AddAction()); buttonPane.add(addButton); JPanel eastPane = new JPanel(new BorderLayout()); eastPane.add(inputPane, BorderLayout.NORTH); eastPane.add(buttonPane, BorderLayout.SOUTH); outputArea = new JTextArea(20, 20); outputArea.setLineWrap(true); JScrollPane sp = new JScrollPane(outputArea); JPanel westPane = new JPanel(); westPane.add(sp); JMenuBar mb = new JMenuBar(); mainFrame.setJMenuBar(mb); JMenu menuF = new JMenu("ファイル"); mb.add(menuF); JMenuItem itemFS = new JMenuItem("保存"); itemFS.addActionListener(new FileSaveAction()); menuF.add(itemFS); menuF.addSeparator(); JMenuItem itemExit = new JMenuItem("終了"); itemExit.addActionListener(new ExitAction()); menuF.add(itemExit); cp.add(westPane, BorderLayout.WEST); cp.add(eastPane, BorderLayout.EAST); mainFrame.pack(); mainFrame.setVisible(true); } public static void main(String[] args) { new Meibo(); } class AddAction implements ActionListener { public void actionPerformed(ActionEvent e){ MyItem item = new MyItem(); item.setName(nameField.getText()); nameList.addElement(item); showList(); } } class ExitAction implements ActionListener{ public void actionPerformed(ActionEvent e){ System.exit(0); } } class FileSaveAction implements ActionListener { public void actionPerformed(ActionEvent e){ JFileChooser chooser = new JFileChooser(); int returnVal = chooser.showSaveDialog(mainFrame); } } public void showList(){ outputArea.setText(""); for(int i=0; i<nameList.size(); i++){ MyItem item = (MyItem)(nameList.elementAt(i)); outputArea.append("名称:" + item.getName() +"\n"); } } class MyItem { private String name; private int price; public void setName(String str){ name = str; } public String getName(){ return name; } } }

すると、全ての回答が全文表示されます。

関連するQ&A