当前位置: 代码迷 >> J2SE >> 程序可以运作,可是当点击“open"按钮的时候,系统却报错了。求高手解答
  详细解决方案

程序可以运作,可是当点击“open"按钮的时候,系统却报错了。求高手解答

热度:31   发布时间:2016-04-24 00:21:47.0
程序可以运行,可是当点击“open"按钮的时候,系统却报错了。求高手解答
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import java.beans.*;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Image;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.filechooser.*;
import javax.swing.filechooser.FileFilter;




public class FileChooserTest 
{
public static void main(String[] args )
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
ImageViewerFrame frame = new ImageViewerFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

});
}
 
}


class ImageViewerFrame extends JFrame
{
public ImageViewerFrame()
  {
setTitle("FileChooserTest");
setSize(300, 400);


JMenuBar mbar= new JMenuBar();
setJMenuBar(mbar);

JMenu fileMenu= new JMenu("File");
mbar.add(fileMenu);


JMenuItem openItem = new JMenuItem("Open");
fileMenu.add(openItem);
openItem.addActionListener(new FileOpenListener());


JMenuItem exitItem = new JMenuItem("Exit");
fileMenu.add(exitItem);
exitItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);

}
});

label = new JLabel();
add(label);

chooser = new JFileChooser();

FileNameExtensionFilter filter = new FileNameExtensionFilter("Image files","jpg","jpeg","gif");
chooser.setFileFilter(filter);
 
chooser.setAccessory(new ImagePreviewer(chooser));
 
chooser.setFileView(new FileIconView(filter,new ImageIcon("paletee.gif")));


  }
  private JLabel label;
  private JFileChooser chooser=null;
 


 

  private class FileOpenListener implements ActionListener  
 {


public void actionPerformed(ActionEvent event) 
{

chooser.setCurrentDirectory(new File("."));
JFileChooser chooser = new JFileChooser();

int result = chooser.showOpenDialog(ImageViewerFrame.this); 

if (result == JFileChooser.APPROVE_OPTION)
{
String filename= chooser.getSelectedFile().getPath();
label.setIcon(new ImageIcon(filename));
}
}
private JLabel label;
  private Component ImageViewerFrame;

 }
}
 
 


 
 
class FileIconView extends FileView
{
public FileIconView(FileFilter aFilter, Icon anIcon)
{
filter= aFilter;
icon= anIcon;
}

public Icon getIcon(File f)
{
if (!f.isDirectory()&& filter.accept(f)) return icon;
else return null;
}

private FileFilter filter;

private Icon icon;
}





class ImagePreviewer extends JLabel
{
public ImagePreviewer(JFileChooser chooser)
{
setPreferredSize(new Dimension(100,100));
setBorder(BorderFactory.createEtchedBorder());


chooser.addPropertyChangeListener(new PropertyChangeListener()
{
public void propertyChange(PropertyChangeEvent event)
{
if (event.getPropertyName()== JFileChooser.SELECTED_FILE_CHANGED_PROPERTY)
{
File f = (File) event.getNewValue();
if (f== null)
{
setIcon(null);
return;
  相关解决方案