java jfilechooser 过滤_java – 将所选文件调整到JFileChooser中的FileFilter

我在

java中编写一个图编辑器.此应用程序可以选择导出为各种标准图像格式,如.jpg,.png等.当用户单击File->导出时,您将获得一个JFileChooser,其中包含多个FileFilters,用于.jpg,.png等等

现在这是我的问题:

有没有办法让默认的扩展调整到选定的文件过滤器?例如.如果文件被命名为“lolcat”,则当选择png过滤器时,默认选项应为“lolcat.png”,当用户选择jpg文件过滤器时,默认值应自动更改为“lolcat.jpg”.

这可能吗?我该怎么做?

编辑:

根据下面的答案,我写了一些代码.但它还没有完成工作.我已经将一个propertyChangeListener添加到FILE_FILTER_CHANGED_PROPERTY,但是在这个方法中似乎getSelectedFile()返回null.这是代码.

package nl.helixsoft;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.beans.PropertyChangeEvent;

import java.beans.PropertyChangeListener;

import java.io.File;

import java.util.ArrayList;

import java.util.List;

import javax.swing.JButton;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.filechooser.FileFilter;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
//package net.src.net; <br><br>import javax.swing.*; <br>import javax.swing.event.*; <br>import java.awt.*; <br>import java.awt.event.*; <br>import java.io.*; <br>import java.awt.color.*; <br>import java.awt.font.*; <br>import javax.swing.undo.*; <br><br>public class Note extends JFrame <br>{ <br>boolean isChange=false; <br>boolean wasChange=false; <br>JMenuBar menuBar=new JMenuBar(); <br><br>JMenu menuFile=new JMenu("File"); <br>JMenuItem menuFileOpen=new JMenuItem("Open.."); <br>JMenuItem menuFileSave=new JMenuItem("Save.."); <br>JMenuItem menuFileExit=new JMenuItem("Exit"); <br><br>JMenu menuEdit=new JMenu("Edit"); <br>JMenuItem menuFileCut=new JMenuItem("Cut"); <br>JMenuItem font=new JMenuItem("Font"); <br>JMenuItem menuFilePaste=new JMenuItem("Paste"); <br><br>JTextArea fileArea=new JTextArea(); <br><br>public Note() <br>{ <br>this.setTitle("记事本"); <br>Toolkit tool=this.getToolkit();//窗口图标! <br>Image myimage=tool.getImage("戒指.jpg"); <br>this.setIconImage(myimage); <br>setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); <br>addWindowListener(new WindowAdapter() <br>{ <br>public void windowClosing(WindowEvent e) <br>{ <br>exit(); <br>} <br>}); <br>menuFileOpen.addActionListener(new ActionListener() <br>{ <br>public void actionPerformed(ActionEvent e) <br>{ <br>fileOpen_actionPerformed(e); <br>} <br>}); <br>menuFileSave.addActionListener(new ActionListener() <br>{ <br>public void actionPerformed(ActionEvent e) <br>{ <br>fileSave_actionPerformed(e); <br>} <br>}); <br>menuFileExit.addActionListener(new ActionListener() <br>{ <br>public void actionPerformed(ActionEvent e) <br>{ <br>fileExit_actionPerformed(e); <br>} <br>}); <br>menuFileCut.addActionListener(new ActionListener() <br>{ <br>public void actionPerformed(ActionEvent e) <br>{ <br>fileCut_actionPerformed(e); <br>} <br>}); <br>menuFilePaste.addActionListener(new ActionListener() <br>{ <br>public void actionPerformed(ActionEvent e) <br>{ <br>filePaste_actionPerformed(e); <br>} <br>}); <br>font.addActionListener(new ActionListener () <br>{ <br>public void actionPerformed(ActionEvent e) <br>{ <br>fileColor_actionPerformed(e); <br>} <br>}); <br>fileArea.getDocument().addDocumentListener(new DocumentListener() <br>{ <br>public void insertUpdate(DocumentEvent e) <br>{ <br>wasChange=isChange; <br>isChange=true; <br>} <br>public void removeUpdate(DocumentEvent e) <br>{ <br>wasChange=isChange; <br>isChange=true; <br>} <br>public void changedUpdate(DocumentEvent e) <br>{ <br>wasChange=isChange; <br>isChange=true; <br>} <br>}); <br>setSize(500,450); <br>menuBar.add(menuFile); <br>menuFile.setMnemonic('F'); <br>menuBar.add(menuEdit); <br>menuEdit.setMnemonic('E'); <br>menuFile.add(menuFileOpen); <br>menuFileOpen.setMnemonic('O');//访问健; <br>menuFileOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));//快捷健; <br>menuFile.add(menuFileSave); <br>menuFileSave.setMnemonic('S'); <br>menuFileSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK)); <br>menuFile.addSeparator(); <br>menuFile.add(menuFileExit); <br>menuFileExit.setMnemonic('E'); <br>menuEdit.add(menuFileCut); <br>menuFileCut.setMnemonic('C'); <br>menuFileCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK)); <br>menuEdit.add(menuFilePaste); <br>menuFilePaste.setMnemonic('P'); <br>menuFilePaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK)); <br>menuEdit.add(font); <br>font.setMnemonic('N'); <br>font.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK)); <br>this.getContentPane().add(new JScrollPane(fileArea)); <br>setJMenuBar(menuBar); <br>fileArea.setLineWrap(true); <br>} <br>public void fileExit_actionPerformed(ActionEvent e) <br>{ <br>System.exit(0); <br>} <br>public void fileOpen_actionPerformed(ActionEvent e) <br>{ <br>//以下是filter; <br>JFileChooser fileChooser=new JFileChooser(); <br>//fileChooser.addChoosableFileFilter(new myFilter("*.txt","Files(*.txt)")); <br>fileChooser.addChoosableFileFilter(fileChooser.getFileFilter()); <br>if(fileChooser.APPROVE_OPTION!=fileChooser.showOpenDialog(this))return; <br>//以下是文件读 <br>BufferedReader dataIn=null; <br>try <br>{ <br>dataIn=new BufferedReader(new FileReader(fileChooser.getSelectedFile().getPath())); <br>String c=null; <br>do <br>{ <br>c=dataIn.readLine(); <br>if(c!=null) <br>fileArea.append(c+"\n"); <br>} <br>while(c!=null); <br>} <br>catch(Exception ex) <br>{ <br>System.out.println("Catch exception:"+ex.toString()); <br>} <br>} <br>public void exit() <br>{ <br>if(isChange==false) <br>System.exit(1); <br>else <br>{ <br>int decision=JOptionPane.showConfirmDialog(this,"The File has Change.\n"+"Do you want to save the change?", <br>"Notepad",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE); <br>if (decision == JOptionPane.YES_OPTION) <br>{ <br>//以下是将文件写入计算机! <br>try { <br>JFileChooser fileSave = new JFileChooser(); <br>fileSave.setDialogTitle("保存文件"); <br>//fileSave.addChoosableFileFilter(new myFilter("*.txt","Files(*.txt)")); <br>fileSave.addChoosableFileFilter(fileSave.getFileFilter()); <br>if (fileSave.APPROVE_OPTION != fileSave.showSaveDialog(this)) <br>return; <br>BufferedWriter dataOut = new BufferedWriter(new BufferedWriter(new <br>FileWriter(fileSave.getSelectedFile()))); <br>String c = null; <br>do { <br>String str = fileArea.getText(); <br>dataOut.write(str); <br>dataOut.close(); <br>} <br>while (c != null); <br>} <br>catch (Exception e2) { <br>System.out.println("Catch exception:有错误!" + e2.toString()); <br>} <br>} <br>else if (decision == JOptionPane.NO_OPTION) <br>System.exit(1); <br>else if (decision == JOptionPane.CANCEL_OPTION); <br>; <br>} <br>//innerclass.fileSave_actionPerformed(); <br>} <br>public void fileSave_actionPerformed(ActionEvent e1) <br>{ <br><br>//以下是将文件写入计算机! <br>try <br>{ <br>JFileChooser fileSave=new JFileChooser(); <br>fileSave.setDialogTitle("保存文件" ); <br>//fileSave.addChoosableFileFilter(new myFilter("*.txt","Files(*.txt)")); <br>fileSave.addChoosableFileFilter(fileSave.getFileFilter()); <br>if(fileSave.APPROVE_OPTION!=fileSave.showSaveDialog(this))return; <br>BufferedWriter dataOut=new BufferedWriter(new BufferedWriter(new FileWriter(fileSave.getSelectedFile()+".txt"))); <br>//RandomAccessFile dataOut=new RandomAccessFile(fileSave.getSelectedFile(),"rw"); <br>String c=null; <br>do <br>{ <br>String str=fileArea.getText(); <br>dataOut.write(str); <br>dataOut.close(); <br>} <br>while(c!=null); <br>} <br>catch(Exception e2) <br>{ <br>System.out.println("Catch exception:有错误!"+e2.toString()); <br>} <br>} <br>public static void main(String arg[]) <br>{ <br>Note nt=new Note(); <br>nt.show(); <br>} <br>public void fileCut_actionPerformed(ActionEvent e) <br>{ <br>fileArea.cut(); <br>} <br>public void filePaste_actionPerformed(ActionEvent e) <br>{ <br>fileArea.paste(); <br>} <br>public void fileColor_actionPerformed(ActionEvent e) <br>{ <br>JColorChooser fileColor=new JColorChooser(); <br>//fileArea.setForeground(fileColor.showDialog(this,"颜色",Color.red)); <br>//fileArea.setSelectionColor(fileColor.showDialog(this,"颜色",Color.red)); <br>fileArea.setSelectionColor(fileColor.showDialog(this,"颜色",Color.black)); <br>} <br>} <br>//文件过滤类怎么写!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值