java的一点小问题,初学者不是很懂

publicclassGUIExample{classMyFrameextendsJFrame{publicMyFrame(){//TODOAuto-generatedc... public class GUIExample{ class MyFrame extends JFrame{ public MyFrame() { // TODO Auto-generated constructor stub super(); } } public static void main(String [] args){ MyFrame myFrame=new MyFrame(); }}//这段代码报错,说是没有GUIExample的实例,这是为什么呢 展开
 我来答
缘来丶缘浅
2013-12-29 · TA获得超过790个赞
知道小有建树答主
回答量:187
采纳率:0%
帮助的人:268万
展开全部

你的MyFrame类是嵌套在GUIExample中的,如果想要调用MyFrame,需要通过GUIExample实例来调用new函数声明:

报错提示你没有GUIExample实例就是这个意思,直接是访问不到MyFrame的,需要通过外部类GUIExample类来调用。

如果将MyFrame类整个从外部提出:

这样就可以直接访问了。

追问
我知道这样子改可以,但是main不是也在GUIExample中吗,为什么还要从外部来调用
追答
main函数只是一个程序的入口,这里你将它放在了GUIExample之中,不过需要注意的是,不管你创建还是不创建GUIExample的实例程序都是可以运行的,意思就是,虽然是在GUIExample中,但是它是不需要创建GUIExample的实例的,而嵌套类和main函数是有很大区别的。
内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号。
内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的。
这样说,清楚吗?
artintin
2013-12-29 · TA获得超过1.2万个赞
知道大有可为答主
回答量:7508
采纳率:80%
帮助的人:2891万
展开全部
MyFrame是内部类(你将它定义在GUIExample中了),不能直接生成对象。
主函数需要先声明GUIExample对象。
你试试
public static void main(String [] args)
{
GuiExample gui=new GuiExample();
GuiExample.MyFrame bb =gui.new MyFrame();
}
追问
谢谢,已经明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sunny兰之幽
2013-12-29
知道答主
回答量:33
采纳率:0%
帮助的人:25.2万
展开全部
加上
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
试试
更多追问追答
追问
本来加着呢,我没往上写,加上也是不对,错误不在那里,它是说没有GUIExample的实例,ps:文件名就是GUIExample
追答

我也不知道了,你遇到的是这样的情况吗?

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式