電子書籍の厳選無料作品が豊富!

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

A 回答 (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) {
}
}
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/01/25 01:02

JFileChooser がやってくれることはあくまでもダイアログを表示してユーザーにファイル名を入力させるところまでです。

ファイルにデータを出力するための処理はプログラマが自分で書かないといけません。

ファイルにデータを書き込むには、java.io パッケージにあるクラス (FileWriter など) を使います。

// サンプルが要りますか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/01/23 20:45

「いまいち分からず」と言われても、何がどう分からないのか分からない……。

「いまいち」ということは、少しくらいは分かるんですよね? 何が分かって何が分からないのかはっきりしていただかないと、答えるほうも何を答えていいのか分からないのです。

ところで、API ドキュメントはちゃんと読んでいますよね? API ドキュメントを読めば JFileChooser の使い方に関する(ほぼ)全てがわかるはずです。サンプルだって載っていましたよ。

参考URL:http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/ja …

この回答への補足

具体的な説明が足らずご迷惑をおかけしました。
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;
}


}
}

補足日時:2005/01/23 12:24
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!