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

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

热度:16   发布时间:2016-04-24 00:43:07.0
程序可以运行,可是当点击"open"按钮时候,系统有报错了,求高手解答
Java code
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; }} 


------解决方案--------------------
得到文件路径后,用第三方的jar(jdom或dom4j)解析这个文件然后显示出来
------解决方案--------------------
把class FileOpenListener 中重复定义的private JLabel label;去掉就可以
然后label.setIcon(new ImageIcon(filename));这个也不用注释掉
  相关解决方案