//************************************************************* // Java application // 「FileChooserTest」 // //          作 成 者:ルート高菜    //          作成開始月:2007/12 //          最終更新月:2007/12 [TN118/J108] //************************************************************* import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.filechooser.FileFilter; public class FileChooserTest extends JPanel implements ActionListener { //Eclipseの場合、シリアライズ可能クラスでこれがないと警告が出る private static final long serialVersionUID=0; public static void main(String[] args) { JFrame frame=new JFrame(); frame.getContentPane().add(new FileChooserTest()); frame.setTitle("FileChooserTest"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //右上×印で終了 frame.setSize(650,250); frame.setVisible(true); frame.setLocationRelativeTo(null); //画面の真ん中に表示 } // File file; // JCheckBox checkBeforeFile=new JCheckBox("前回パス使用"); JTextField textPath=new JTextField(20); JComboBox comboChooserType=new JComboBox(new String[]{"OpenDialog","SaveDialog"}); JComboBox comboSelectMode=new JComboBox(new String[]{"FILES_ONLY","DIRECTORIES_ONLY","FILES_AND_DIRECTORIES"}); JTextField textTitle=new JTextField(8); JTextField textButton=new JTextField(8); JTextField textToolTip=new JTextField(8); JCheckBox checkAddFilter=new JCheckBox("新フィルター追加"); JCheckBox checkHideFilter=new JCheckBox("基本フィルター削除"); JCheckBox checkMulti=new JCheckBox("複数選択可能"); JCheckBox checkHideFile=new JCheckBox("隠しファイル表示"); JButton buttonShowChooser=new JButton("表示"); JLabel labelResultFile=new JLabel("未選択"); JLabel labelResultName=new JLabel("未選択"); // public FileChooserTest(){ // file=null; // add(checkBeforeFile); add(new JLabel(" パス指定:")); add(textPath); add(new JLabel(" タイプ:")); add(comboChooserType); add(new JLabel(" タイトル:")); add(textTitle); add(new JLabel(" ボタン文字:")); add(textButton); add(new JLabel(" ボタンツールチップ:")); add(textToolTip); add(new JLabel(" 選択モード:")); add(comboSelectMode); add(checkAddFilter); add(checkHideFilter); add(checkMulti); add(checkHideFile); add(buttonShowChooser); add(new JLabel(" DIR : ")); add(labelResultFile); add(new JLabel(" NAME : ")); add(labelResultName); // buttonShowChooser.addActionListener(this); } // public void actionPerformed(ActionEvent e) { Object object=e.getSource(); if(object==buttonShowChooser){ // JFileChooser chooser; //必要ならパスを指定して、オブジェクト作成 if(checkBeforeFile.isSelected()){ chooser=new JFileChooser(file); }else{ if(!textPath.getText().equals("")){ chooser=new JFileChooser(textPath.getText()); }else{ chooser=new JFileChooser(); } } //ダイアログのタイトル if(!textTitle.getText().equals("")){ chooser.setDialogTitle(textTitle.getText()); } //OKボタンの文字 if(!textButton.getText().equals("")){ chooser.setApproveButtonText(textButton.getText()); } //OKボタンのツールチップ if(!textToolTip.getText().equals("")){ chooser.setApproveButtonToolTipText(textToolTip.getText()); } //ファイルとフォルダー、どれを選べるか switch(comboSelectMode.getSelectedIndex()){ case 0: //chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); //初期値 break; case 1: chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); break; case 2: chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); break; } //新しいフィルターを追加する if(checkAddFilter.isSelected()){ chooser.addChoosableFileFilter(new TextFilter()); //新しいバージョンなら以下の簡単な方法でできるらしい //FileFilter filter=new FileNameExtensionFilter("テキストファイル","txt"); //chooser.addChoosableFileFilter(filter); } //基本の「すべてを表示」フィルターを表示しない if(checkHideFilter.isSelected()){ chooser.setAcceptAllFileFilterUsed(false); } //複数選択可能に if(checkMulti.isSelected()){ chooser.setMultiSelectionEnabled(true); } //隠しファイルを表示する if(checkHideFile.isSelected()){ chooser.setFileHidingEnabled(false); } //セーブかロードか、そして結果を受け取る int ret=0; if(comboChooserType.getSelectedIndex()==0){ ret=chooser.showOpenDialog(this); }else if(comboChooserType.getSelectedIndex()==1){ ret=chooser.showSaveDialog(this); } //ファイル選択の結果を表示 switch(ret){ case JFileChooser.APPROVE_OPTION: if(!checkMulti.isSelected()){ //単独選択 file=chooser.getSelectedFile(); labelResultFile.setText(getDir(file)); //ディレクトリ labelResultName.setText(file.getName()); //ファイル名 }else{ //複数選択可能 File[] files=chooser.getSelectedFiles(); //配列で受け取る //ディレクトリ StringBuffer bufName=new StringBuffer(); for(int f=0;f0 && index