※ ChatGPTを利用し、要約された質問です(原文:Java JFileChooser)
Java JFileChooserでファイルのフィルタリング方法について
こんにちは。趣味でプログラミングをしているものです。
さっそくですが、質問させていただきます。
まず、以下のコードをみていただきたいのですが・・・
public class test03 extends JFrame
{
DrawPanel dp01;
test03()
{
super("filedialog test");
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
dp01 = new DrawPanel();
add( dp01 );
setResizable( false );
setLocation( 170,300 );
pack();
setVisible( true );
}
/**
* @param args
*/
public static void main(String[] args)
{
// TODO 自動生成されたメソッド・スタブ
new test03();
}
}
--------------------------------------------------------
class DrawPanel extends JPanel implements ActionListener
{
JButton btOpen;
JButton btSave;
DrawPanel()
{
super();
setLayout( null );
setPreferredSize( new Dimension( 200, 240 ));
setBackground( new Color( 220,240, 230 ));
btOpen = new JButton( "open");
btSave = new JButton( "save");
btOpen.addActionListener( this );
btSave.addActionListener( this );
add( btOpen );
add( btSave );
btOpen.setBounds( 0,0, 100,40 );
btSave.setBounds( 100,0, 100, 40 );
}
public void actionPerformed( ActionEvent ae01 )
{
if( ae01.getSource() == btOpen )
{
JFileChooser jfc = new JFileChooser();
FileNameExtensionFilter filter
= new FileNameExtensionFilter( "jpg and gif files","jpg","gif");
jfc.setFileFilter( filter );
int retvalue = jfc.showOpenDialog( null );
if( retvalue == JFileChooser.APPROVE_OPTION )
{
//System.out.println( "you choosed a file : ");
System.out.println( jfc.getCurrentDirectory().getName() );
System.out.println( jfc.getSelectedFile().getName() );
System.out.println( jfc.getSelectedFile().getAbsolutePath());
}
}
}
}
DrawPanel クラスの中の FileNameExtensionFilter についてなのですが、
コンストラクタの引数をこのように指定すると、
jpg と gif のファイルが同時にフィルターされ抽出されるのですが、
Windows7 に標準で付属しているペイントだと、
拡張子一種類ずつのファイルがフィルターにより抽出されます。
JFileChooser を用いても、ペイントのようなファイルの
フィルタリングはできるものでしょうか?
ご存知のかた、教えていただけないでしょうか?
よろしくお願いします。
お礼
こちらの質問にも答えていただきありがとうございます。 さっそく指摘していただいた addChoosableFileFilter を使わせていただき一種類ごとの フィルタリングができました。 貴重な時間をさいての回答、ありがとうございました。