黑马程序员技术交流社区
标题:
关于Frame的问题
[打印本页]
作者:
王程
时间:
2012-8-8 15:06
标题:
关于Frame的问题
看了毕老师关于图形界面的视频,自己动手试了一下
import java.awt.*;
import java.awt.event.*;
class FrameDemo
{
private Frame f;
private Button but;
FrameDemo()
{
init();
}
public static void main(String[] args)
{
new FrameDemo();
}
private void init()
{
f=new Frame("My Frame");
f.setSize(400,300);
f.setLocation(300,200);
f.setLayout(new FlowLayout());
but=new Button("转换");
f.add(but);
f.setVisible(true);
}
f.addWindowListener(new WindowAdapter()//这一行报错, <identifier> expected
//f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.out.println("我关");
System.exit(0);
}
public void windowOpende(WindowEvent e)
{
System.out.println("打开");
}
public void windowActiviated(WindowEvent e)
{
System.out.println("被置为当前");
}
});
}
复制代码
不知道为什么会错?
作者:
黑马振鹏
时间:
2012-8-8 15:28
我直接按照你的思路来:
你应该是想把f.addWindowListener(new WindowAdapter(){})放到init()中,但是你在在一个函数外边加了这一句,肯定有问题。
要么写个函数调用它,要么把它放到init(){ }里面。
并且复写的函数应该也不对吧。
作者:
徐小骥
时间:
2012-8-8 15:50
import java.awt.*;
import java.awt.event.*;
class jFrameDemo
{
private Frame f=null;
private Button but;
jFrameDemo()
{
init();
}
public static void main(String[] args)
{
new jFrameDemo();
}
private void init()
{
f=new Frame("My Frame");
f.setSize(400,300);
f.setLocation(300,200);
f.setLayout(new FlowLayout());
but=new Button("转换");
f.add(but);
f.setVisible(true);
f.addWindowListener(new WindowAdapter()//这一行报错, <identifier> expected //f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.out.println("我关");
System.exit(0);
}
public void windowOpende(WindowEvent e)
{
System.out.println("打开");
}
public void windowActiviated(WindowEvent e)
{
System.out.println("被置为当前");
}
});
}
}
你在 FrameDemo()调用init():但是你的init()方法中没有 addWindowListener()方法,你的 addWindowListener()写在了init()方法的外面 看看上面代码,能达到你要的效果么?
作者:
程有愿
时间:
2012-8-8 21:52
其实很简单,f.addWindowListener(new WindowAdapter()//这一行报错, <identifier> expected
//f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.out.println("我关");
System.exit(0);
}
public void windowOpende(WindowEvent e)
{
System.out.println("打开");
}
public void windowActiviated(WindowEvent e)
{
System.out.println("被置为当前");
}
});
这个语句没有自己的作用域,没有自己所在的方法体,所以会报错,你可以将这个封装到一个方法里面去,然后在inti这个方法里面来调用这个方法就可以,
这个也是毕老师提出的组件和事件分开来描述,这样更容易区分这个里面的关系,也就不会出现那么多错误了!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2