代码来自《java核心技术》第八版,23页 import java.util.*;
import java.awt.EventQueue;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;public class ImageViewer 
{
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
JFrame frame = new ImageViewerFrame();
frame.setDefaultCloseOperation((JFrame.EXIT_ON_CLOSE) );
frame.setVisible(true);
}
});
}
}
class ImageViewerFrame extends JFrame
{
public ImageViewerFrame()
{
setTitle("ImageViewer");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

label = new jLabel();
add(label);

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

JMenuBar menubar = new JMenubar();
setJMenubar(menuBar);

JMenu menu = new JMenu("File");
menuBar.add(menu);

JMenuItem openItem = new JMenuItem("Open");
menu.add(openItem);
openItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
int result = chooser.showOpenDialog(null);

if( result == JFileChooser.APPROVE_OPTION)
{
String name = chooser.getSelectedFile().getPath();
label.setIcon(new ImageIcon(name));
}
}
});
JMenuItem exitItem = new JMenuItem("Exit");
menu.add(exitItem);
exitItem.addActionListener((new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
});
}

private JLabel label;
private JFileChooser chooser;
private static final int DEFAULT_WIDTH = 300;
private static final int DEFAULT_HEIGHT = 400;
}
}Eclipse 提示:
Exception in thread "main" java.lang.Error: 无法解析的编译问题: at ImageViewer.main(ImageViewer.java:9)

解决方案 »

  1.   


    import java.awt.EventQueue;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;import javax.swing.ImageIcon;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.*;public class ImageViewer {
        public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
    JFrame frame = new ImageViewerFrame();
    frame.setDefaultCloseOperation((JFrame.EXIT_ON_CLOSE));
    frame.setVisible(true);
        }
    });
        }
    }class ImageViewerFrame extends JFrame {
        public ImageViewerFrame() {
    setTitle("ImageViewer");
    setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); label = new JLabel();// error
    add(label); chooser = new JFileChooser();
    chooser.setCurrentDirectory(new File(".")); JMenuBar menubar = new JMenuBar();// error
    setJMenuBar(menubar);// error + error JMenu menu = new JMenu("File");
    menubar.add(menu);// error JMenuItem openItem = new JMenuItem("Open");
    menu.add(openItem); openItem.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent event) {
    int result = chooser.showOpenDialog(null); if (result == JFileChooser.APPROVE_OPTION) {
        String name = chooser.getSelectedFile().getPath();
        label.setIcon(new ImageIcon(name));
    }
        }
    }); JMenuItem exitItem = new JMenuItem("Exit");
    menu.add(exitItem);
    exitItem.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent event) {
    System.exit(0);
        }
    });    }    private JLabel label;
        private JFileChooser chooser;
        private static final int DEFAULT_WIDTH = 300;
        private static final int DEFAULT_HEIGHT = 400;
    }
      

  2.   

    大小写有问题,还有一个}的位置放的不对
    public class ImageViewer 
    {
        public static void main(String[] args)
        {
            EventQueue.invokeLater(new Runnable()
            {
                public void run()
                {
                    JFrame frame = new ImageViewerFrame();
                    frame.setDefaultCloseOperation((JFrame.EXIT_ON_CLOSE) );
                    frame.setVisible(true);
                }
            });
        }
    }
    class ImageViewerFrame extends JFrame
    {
        public ImageViewerFrame()
        {
            setTitle("ImageViewer");
            setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
            
            label = new JLabel();
            add(label);
            
            chooser = new JFileChooser();
            chooser.setCurrentDirectory(new File("."));
            
            JMenuBar menubar = new JMenuBar();
    //        this.setJMenuBar(menubar)
            setJMenuBar(menubar);
            
            JMenu menu = new JMenu("File");
            menubar.add(menu);
            
            JMenuItem openItem = new JMenuItem("Open");
            menu.add(openItem);
            openItem.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent event)
                {
                    int result = chooser.showOpenDialog(null);
                    
                    if( result == JFileChooser.APPROVE_OPTION)
                    {
                        String name = chooser.getSelectedFile().getPath();
                        label.setIcon(new ImageIcon(name));
                    }
                }
            });
            JMenuItem exitItem = new JMenuItem("Exit");
            menu.add(exitItem);
            exitItem.addActionListener((new ActionListener(){
                public void actionPerformed(ActionEvent event)
                {
                    System.exit(0);
                }
            }));
        }
        
        private JLabel label;
        private JFileChooser chooser;
        private static final int DEFAULT_WIDTH = 300;
        private static final int DEFAULT_HEIGHT = 400;
    }
      

  3.   

    代码里好多名称大小写不对setJMenubar =》 setJMenuBar
    改过后的代码,可以跑了import java.util.*;
    import java.awt.EventQueue;
    import java.awt.event.*;
    import java.io.*;
    import javax.swing.*;public class ImageViewer 
    {
        public static void main(String[] args)
        {
            EventQueue.invokeLater(new Runnable()
            {
                public void run()
                {
                    JFrame frame = new ImageViewerFrame();
                    frame.setDefaultCloseOperation((JFrame.EXIT_ON_CLOSE) );
                    frame.setVisible(true);
                }
            });
        }
    }
    class ImageViewerFrame extends JFrame
    {
        public ImageViewerFrame()
        {
            setTitle("ImageViewer");
            setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
            
            label = new JLabel();
            add(label);
            
            chooser = new JFileChooser();
            chooser.setCurrentDirectory(new File("."));
            
            JMenuBar menubar = new JMenuBar();
            setJMenuBar(menubar);
            
            JMenu menu = new JMenu("File");
            menubar.add(menu);
            
            JMenuItem openItem = new JMenuItem("Open");
            menu.add(openItem);
            openItem.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent event)
                {
                    int result = chooser.showOpenDialog(null);
                    
                    if( result == JFileChooser.APPROVE_OPTION)
                    {
                        String name = chooser.getSelectedFile().getPath();
                        label.setIcon(new ImageIcon(name));
                    }
                }
            });
            JMenuItem exitItem = new JMenuItem("Exit");
            menu.add(exitItem);
            exitItem.addActionListener((new ActionListener()
            {
                public void actionPerformed(ActionEvent event)
                {
                    System.exit(0);
                }
            }));
        }
        
        private JLabel label;
        private JFileChooser chooser;
        private static final int DEFAULT_WIDTH = 300;
        private static final int DEFAULT_HEIGHT = 400;
    }