java编译时提示找不到符号

我是自己学java,这是我自己第一次写的几行代码,在cmd中编译时提示找不到符号,望各位大侠指点指点,代码如下:importjava.awt.*;importjava.a... 我是自己学java,这是我自己第一次写的几行代码,在cmd中编译时提示找不到符号,望各位大侠指点指点,代码如下:
import java.awt.*;
import java.awt.event.*;
public class My extends Frame implements ActionListener{
public void My(){
Button lchange=new Button("变色");
lchange.setColor(new Color(0,0,255));
add(lchange);
setSize(51,65);
setVisible(true);
}
public void actionPerformed(ActionEvent ae){
if(ae.getSource==lchange)
lchange.setBackground(new Color(125,255,34));
}
public static void main (String[] args) {
new My();
}

}

提示的结果是:

C:\>javac My.java
My.java:6: 找不到符号
符号: 方法 setColor(java.awt.Color)
位置: 类 java.awt.Button
lchange.setColor(new Color(0,0,255));
^
My.java:12: 找不到符号
符号: 变量 getSource
位置: 类 java.awt.event.ActionEvent
if(ae.getSource==lchange)
^
My.java:12: 找不到符号
符号: 变量 lchange
位置: 类 My
if(ae.getSource==lchange)
^
My.java:13: 找不到符号
符号: 变量 lchange
位置: 类 My
lchange.setBackground(new Color(125,255,34));
^
4 错误

C:\>
展开
 我来答
趣事情
2015-11-15 · 知道合伙人互联网行家
趣事情
知道合伙人互联网行家
采纳数:517 获赞数:5452
电脑技术,软件开发。移动开发。网站建设相关专业知识。都可以提供解答和相关技术指导。

向TA提问 私信TA
展开全部
用MYECLIPSE开发环境
通常情况下,在编写java文件时,会有引用到自已定义的一些类,如果按通常的javac *.java的形式来编译会出现找不到符号的错误。
以下提供了两种方法

假如在d:/web/wsh下有a.java和b.java两个文件,在b.java文件中有引用了a.java。下面是编译的方法

1.方法一:
进入d:/web/wsh下: javac a.java
然后退出wsh目录即进入d:/wsh下 javac wsh/b.java即可编译成功!

2.方法二:通过使用javac -classpath(cp)参数
进入d:/web /wsh下: javac a.java
还是在d:/wsh/wsh下: javac -classpath d:/web/wsh b.java
这样也可以编译成功!

以下方法都通过测试!

以下是javac编译的参数:
用法:javac <选项> <源文件>
选项:
-g:none 不生成任何调试信息
-g:{lines,vars,source} 只生成某些调试信息
-nowarn 不生成任何警告
-verbose 输出有关编译器正在执行的操作的消息
-deprecation 输出使用已过时的 API 的源位置
-classpath <路径> 指定查找用户类文件的位置
-cp <路径> 指定查找用户类文件的位置
-sourcepath <路径> 指定查找输入源文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置
-extdirs <目录> 覆盖安装的扩展目录的位置
-endorseddirs <目录> 覆盖签名的标准路径的位置
-d <目录> 指定存放生成的类文件的位置
-encoding <编码> 指定源文件使用的字符编码
-source <版本> 提供与指定版本的源兼容性
-target <版本> 生成特定 VM 版本的类文件
-version 版本信息
-help 输出标准选项的提要
-X 输出非标准选项的提要
-J<标志> 直接将 <标志> 传递给运行时系统
kejiaweiren
推荐于2017-10-04 · TA获得超过6740个赞
知道大有可为答主
回答量:1774
采纳率:0%
帮助的人:3351万
展开全部
import java.awt.*;
import java.awt.event.*;

public class My extends Frame implements ActionListener {
Button lchange = new Button("变色");
public My() {
add(lchange);
setSize(51, 65);
setVisible(true);
}

public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == lchange)
lchange.setBackground(new Color(125, 255, 34));
}

public static void main(String[] args) {
new My();
}

}
至少这样不会有错了。
错误 一:public My应该是构造函数。不应该是方法。
错误二:if (ae.getSource() == lchange)漏括号
错误三:Button lchange = new Button("变色");放到外面来,不然拿不到
错误四:lchange.setColor(new Color(0,0,255));是不对的。BUTTON类没有这个方法。
建议一:用MYECLIPSE开发环境,没人用CMD里来运行的。
建议二: 要实现变色功能要自己写事件
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大时代暑
2010-02-20 · TA获得超过2.5万个赞
知道大有可为答主
回答量:4111
采纳率:0%
帮助的人:4832万
展开全部
变量 lchange声明在方法My()中,属于局部变量,在其他方法内当然无法访问。该为实例变量吧,就是把Button lchange=new Button("变色");这条语句改为lchange=new Button("变色");然后在public class My extends Frame implements ActionListener{
的下面, public void My(){ 的上面 写上Button lchange;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiangsandy
2010-02-20 · 超过12用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:28.1万
展开全部
Button类没有setColor()这个方法,ae.gerSource()是方法,后面要加上();
My()是构造方法,没有返回值,前面不能加void ;Ichange是构造函数里局部变量,要想在其他方法里访问,要把它声明为成员变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式