import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
public class frame extends JFrame implements ActionListener
{
public frame()
{
setSize(400,400);
setVisible(true);
JMenuBar mbar =new JMenuBar();
setJMenuBar(mbar);
JMenu m1 = new JMenu("file");
mbar.add(m1);
JMenuItem OpenItem=new JMenuItem("open");
m1.add(OpenItem);
OpenItem.addActionListener(this);
JMenuItem ExitItem =new JMenuItem("exit");
m1.add(ExitItem);
ExitItem.addActionListener(this);
JLabel label =new JLabel();
Container content=getContentPane();
content.add(label,JLabel.CENTER);
}
public void actionPerformed(ActionEvent evt)
{
Object source =evt.getSource();
if(source==OpenItem)
{JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("d:/"));
chooser.setFileFilter(new javax.swing.filechooser.FileFilter()
{public boolean accept(File f)
{
return f.getName().toLowerCase().endsWith(".gif");
}
public String getDescription()
{return "Gif picture";}
});
int result =chooser.showOpenDialog(this);
if(result==JFileChooser.APPROVE_OPTION)
{ String name=chooser.getSelectedFile().getName();
label.setIcon(new ImageIcon(name));
}
}
else if(source==ExitItem) System.exit(0);
}
public static void main(String args[])
{
new frame();
}
}我在电脑中运行后显示:
D:\>javac frame.java
frame.java:30: cannot find symbol
symbol : variable OpenItem
location: class frame
if(source==OpenItem)
^
frame.java:44: cannot find symbol
symbol : variable label
location: class frame
label.setIcon(new ImageIcon(name));
^
frame.java:47: cannot find symbol
symbol : variable ExitItem
location: class frame
else if(source==ExitItem) System.exit(0);
^
3 errors
我看了半天也没发现问题到底错在那?
import java.awt.event.*;
import java.awt.*;
import java.io.*;
public class frame extends JFrame implements ActionListener
{
public frame()
{
setSize(400,400);
setVisible(true);
JMenuBar mbar =new JMenuBar();
setJMenuBar(mbar);
JMenu m1 = new JMenu("file");
mbar.add(m1);
JMenuItem OpenItem=new JMenuItem("open");
m1.add(OpenItem);
OpenItem.addActionListener(this);
JMenuItem ExitItem =new JMenuItem("exit");
m1.add(ExitItem);
ExitItem.addActionListener(this);
JLabel label =new JLabel();
Container content=getContentPane();
content.add(label,JLabel.CENTER);
}
public void actionPerformed(ActionEvent evt)
{
Object source =evt.getSource();
if(source==OpenItem)
{JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("d:/"));
chooser.setFileFilter(new javax.swing.filechooser.FileFilter()
{public boolean accept(File f)
{
return f.getName().toLowerCase().endsWith(".gif");
}
public String getDescription()
{return "Gif picture";}
});
int result =chooser.showOpenDialog(this);
if(result==JFileChooser.APPROVE_OPTION)
{ String name=chooser.getSelectedFile().getName();
label.setIcon(new ImageIcon(name));
}
}
else if(source==ExitItem) System.exit(0);
}
public static void main(String args[])
{
new frame();
}
}我在电脑中运行后显示:
D:\>javac frame.java
frame.java:30: cannot find symbol
symbol : variable OpenItem
location: class frame
if(source==OpenItem)
^
frame.java:44: cannot find symbol
symbol : variable label
location: class frame
label.setIcon(new ImageIcon(name));
^
frame.java:47: cannot find symbol
symbol : variable ExitItem
location: class frame
else if(source==ExitItem) System.exit(0);
^
3 errors
我看了半天也没发现问题到底错在那?
解决方案 »
- 诡异的Java语法,下面这句话神马意思?
- java垃圾回收的疑问
- jsp连接数据库mysql问题
- 有没有人会使用java和matlab结合啊
- 各位老大,小弟问一下,在java中写的单机版程序如何像金山词霸一样,每一个系统,同时只能有一个程序在跑??
- 请问谁有jni方面的资料?急需,谢谢!
- JDK 编译时的错误!帮忙解决:(
- 关键字this
- 求助--java 如何设置环境变量??
- Connection reset by peer: JVM_recv in socket input stream read
- J选择两个list中列的问题?高手回答,在线等~~~
- 请高手看一下发送邮件的这个程序代码,问题在哪儿
package zhao;import java.util.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
public class frame extends JFrame implements ActionListener
{
JMenuItem OpenItem=null;
JLabel label = null;
JMenuItem ExitItem = null;
public frame()
{
setSize(400,400);
setVisible(true);
JMenuBar mbar =new JMenuBar();
setJMenuBar(mbar);
JMenu m1 = new JMenu("file");
mbar.add(m1);
OpenItem=new JMenuItem("open");
m1.add(OpenItem);
OpenItem.addActionListener(this);
ExitItem =new JMenuItem("exit");
m1.add(ExitItem);
ExitItem.addActionListener(this);
JLabel label =new JLabel();
Container content=getContentPane();
content.add(label,JLabel.CENTER);
}
public void actionPerformed(ActionEvent evt)
{
Object source =evt.getSource();
if(source==OpenItem)
{JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("d:/"));
chooser.setFileFilter(new javax.swing.filechooser.FileFilter()
{public boolean accept(File f)
{
return f.getName().toLowerCase().endsWith(".gif");
}
public String getDescription()
{return "Gif picture";}
});
int result =chooser.showOpenDialog(this);
if(result==JFileChooser.APPROVE_OPTION)
{ String name=chooser.getSelectedFile().getName();
label.setIcon(new ImageIcon(name));
}
}
else if(source==ExitItem) System.exit(0);
}
public static void main(String args[])
{
new frame();
}
}没仔细看代码,反正就是变量的范围问题了
JMenuItem OpenItem;
JMenuItem ExitItem;
JLabel label ;在构造方法前面加上上面几行代码,在构造方法里去掉对变量的声明。因为你在actionPerformed方法中引用了未声明的变量。注意变量的作用域。你在actionPerformed方法中使用的变量超过了变量的作用域
JMenuItem OpenItem;
JLabel label;
JMenuItem ExitItem;
public frame() {
JMenuItem OpenItem=new JMenuItem("open"); JMenuItem ExitItem =new JMenuItem("exit"); JLabel label =new JLabel(); 把这三句放到构造函数的上面应该就ok了~!