ファイル名を取得する
ファイルチューザーを使ったダイアログで選択したファイルはJFileChooserクラスで用意されている「getSelectedFile」メソッドでFileクラスのオブジェクトとして取得できます。取得したFileクラスのオブジェクトからファイル名を取得する方法を確認します。JFileChooserクラスで用意されている「」メソッドを使います。
public String getName(File f)
ファイル名を返します。 パラメータ: f - File 戻り値: f のファイル名を格納する String
引数にファイル名を取得したいFileクラスのオブジェクトを指定します。
戻り値としてFileクラスのオブジェクトからファイル名をString型の値として取得できます。
※ファイル名を取得するにはFileクラスでも「getName」メソッドや「getAbsolutePath」メソッドが用意されています。Fileクラスの詳細については『ファイルを管理する』を参照して下さい。
実際の使い方は次のようになります。
JFileChooser filechooser = new JFileChooser(); int selected = filechooser.showOpenDialog(this); if (selected == JFileChooser.APPROVE_OPTION){ File file = filechooser.getSelectedFile(); String filename = filechooser.getName(file); }
サンプルプログラム
では簡単なサンプルを作成して試してみます。
import javax.swing.*; import java.io.File; import java.awt.BorderLayout; import java.awt.event.*; public class JFileChooserTest6 extends JFrame implements ActionListener{ JLabel label; public static void main(String[] args){ JFileChooserTest6 frame = new JFileChooserTest6(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10, 300, 200); frame.setTitle("タイトル"); frame.setVisible(true); } JFileChooserTest6(){ JButton button = new JButton("file select"); button.addActionListener(this); JPanel buttonPanel = new JPanel(); buttonPanel.add(button); label = new JLabel(); JPanel labelPanel = new JPanel(); labelPanel.add(label); getContentPane().add(labelPanel, BorderLayout.CENTER); getContentPane().add(buttonPanel, BorderLayout.PAGE_END); } public void actionPerformed(ActionEvent e){ JFileChooser filechooser = new JFileChooser(); int selected = filechooser.showOpenDialog(this); if (selected == JFileChooser.APPROVE_OPTION){ File file = filechooser.getSelectedFile(); label.setText(filechooser.getName(file)); } } }
上記をコンパイルした後で実行すると次のように表示されます。
ボタンをクリックすると「ファイルを開く」ダイアログを表示します。ファイルを選択してダイアログを閉じると選択したファイルのファイル名を表示します。(これまでのサンプルと同じですがファイル名の取得に今回はJFileChooserクラスのメソッドを使っています)。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。