书上一个简单的AWT事件例题 我改写了下 但是不知道错哪了 请各位指教下
import java.awt.*;
import java.awt.event.*;
class Test4 extends Frame
{
Label p1 = new Label("");
Button p2 = new Button("显示消息");
public Test4()
{
super();
setLayout(new FlowLayout());
add(p2);
add(p1);
p2.addActionListener(this);
}
class Test4 extends Frame implements ActionListener
{
Label p1 = new Label("");
Button p2 = new Button("显示消息");
}
public void actionPerformed (ActionEvent ae)
{
if(ae.getActionCommand().equals("显示消息"))
{
p2.setLabel("隐藏消息");
p1.setText("您好,世界");
}
else if(ae.getActionCommand().equals("隐藏消息"))
{
p2.setLabel("显示消息");
p1.setText("");
}
}
public static void main(String[] args)
{
Test4 t1 = new Test4("控制面板演示程序");
t1.setSize(400,300);
t1.setVisible(true);
}
}
[此贴子已经被作者于2006-10-21 20:59:39编辑过]
----------------解决方案--------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
class Test4 extends Frame implements ActionListener
{
Label p1 = new Label("");
Button p2 = new Button("显示消息");
public Test4()
{
super();
setLayout(new FlowLayout());
add(p2);
add(p1);
p2.addActionListener(this);
}
/* class Test4 extends Frame implements ActionListener
{
Label p1 = new Label("");
Button p2 = new Button("显示消息");
}*/
public void actionPerformed (ActionEvent ae)
{
if(ae.getActionCommand().equals("显示消息"))
{
p2.setLabel("隐藏消息");
p1.setText("您好,世界");
}
else if(ae.getActionCommand().equals("隐藏消息"))
{
p2.setLabel("显示消息");
p1.setText("");
}
}
public static void main(String[] args)
{
Test4 t1 = new Test4(); //"控制面板演示程序");
t1.setSize(400,300);
t1.setVisible(true);
t1.setTitle("控制面板演示程序");
}
}
去掉红色的类,因为你的类和主类同名了;
如果想添加标题,按照你的思路,你的添加标题的方法应该写再构造函数里;
就是把蓝色的部分放在构造函数里,不用注销掉绿色部分;
我只是将它直接写出来而已
----------------解决方案--------------------------------------------------------
是不是有了 class Test4 extends Frame implements ActionListener 初始化
就可以不用class Test4 extends Frame 了????
class Test4 extends Frame implements ActionListener 可以代替class Test4 extends Frame ???
----------------解决方案--------------------------------------------------------
是的,在java里,一个类不可以多重继承,但可以继承很多个接口,这里的ActionListener就是个接口!!
----------------解决方案--------------------------------------------------------
知道了
----------------解决方案--------------------------------------------------------
又写了一段代码 导了个swing包
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test5 extends JFrame implements ActionListener
{
JButton t1 = new JButton("g");
public Test5(String s)
{
super(s);
setLayout(new FlowLayout());
add(t1);
t1.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getActionCommand().equals("g"))
{
JOptionPane.showMessageDialog(null,"成功",JOptionPane.CLOSED_OPTION);
}
}
public static void main(String[] args)
{
Test5 y1 = new Test5();
y1.setSize(100,100);
y1.setLocation(200,200);
y1.setVisible(true);
y1.setsetTitle("测试");
}
}
这个为什么就不能运行了呢?
[此贴子已经被作者于2006-10-21 10:48:36编辑过]
----------------解决方案--------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test extends JFrame implements ActionListener
{
JButton t1 = new JButton("g");
public Test()
{
}
public Test(String s)
{
super(s);
setLayout(new FlowLayout());
add(t1);
t1.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getActionCommand().equals("g"))
{
JOptionPane.showMessageDialog(null,"成功");//参数有错
}
}
public static void main(String[] args)
{
Test y1 = new Test();//这里不传值将会调用默认的构造方法,即调用的是不传参数的构造方法,所以你的代码里还差一个默认构造方法(红色部分)
y1.setSize(100,100);
y1.setLocation(200,200);
y1.setVisible(true);
y1.setTitle("测试");
}
}
----------------解决方案--------------------------------------------------------
JOptionPane.showMessageDialog(null,"成功");//参数有错
原来是这里出错
多谢谢各位指正
----------------解决方案--------------------------------------------------------