import java.awt.*;
import java.awt.event.*;
//创建JPanel面板
class PanelTest extends JApplet
{
JPanel p;
public PanelTest()
{
p=new JPanel();
getContentPane().add(p);
}
}
//创建JButton按钮 并将按钮添加到面板
class ButtonTest extends PanelTest
{
JButton butObj1;
JButton butObj2;
public ButtonTest()
{
butObj1=new JButton("击我");
butObj2=new JButton("按钮2");
butObj1.setEnabled(true);//使能
butObj2.setEnabled(false);//不使能
p.add(butObj1);
p.add(butObj2);
}
}
//创建FlowLayout流布局管理器 并为面板设置流布局
class FlowLayoutTest extends ButtonTest
{
FlowLayout layoutObj;
public FlowLayoutTest()
{
layoutObj=new FlowLayout(FlowLayout.CENTER,10,10);
p.setLayout(layoutObj);//将流布局添加到面板
}
}
//创建事件类EventTest 并为按钮添加事件
class EventTest extends FlowLayoutTest
{
ButtonEvent beObj;
public EventTest()
{
beObj=new ButtonEvent();//创建事件内部类对象
butObj1.addMouseListener(beObj); //为butObj1注册监听器
butObj2.addMouseListener(beObj);//为butObj2注册监听器
}
//下面为一个事件内部类,编写事件处理代码
class ButtonEvent implements MouseListener
{
//重写MouseListener接口的所有方法
public void mouseClicked(MouseEvent e)
{
Object obj=e.getSource();//返回事件类
if(obj==butObj1)
{
butObj1.setEnabled(false);
butObj1.setText("按钮1");
butObj2.setEnabled(true);
butObj2.setText("击我");
}
if(obj==butObj2)
{
butObj2.setEnabled(false);
butObj2.setText("按钮2");
butObj1.setEnabled(true);
butObj1.setText("击我");
}
}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
}
}
//下面代码是包含init()方法的公共类
public class J01_MouseEvent
{
public void init()
{
new EventTest();//???
}
}
上面是我用jdk1.4做的一个事件处理, 编译 运行都没有错,
但启动的小应用程序说我没有初始化. 不知道是怎么回事, 请指点 谢谢
----------------解决方案--------------------------------------------------------
如何调用你的小程序?
[此贴子已经被作者于2007-9-25 15:30:24编辑过]
----------------解决方案--------------------------------------------------------
在java里面,如果是定义类的变量,可以不必初始化,但是如果是在方法里面定义的变量就必须初始化了
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
我用HTML把.class文件嵌入在网页中 ,然后用 AppletViewer 执行啊!
----------------解决方案--------------------------------------------------------
哎呀 我晓得了 原来是公共类没有继承事件类啊 弄了几个小时了 .
public class J01_MouseEvent extends EventTest
{
public void init()
{
new EventTest();//???
}
}
----------------解决方案--------------------------------------------------------
不对啊
[此贴子已经被作者于2007-9-25 16:16:29编辑过]
----------------解决方案--------------------------------------------------------
MM说什么不对呢?
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
MM说什么不对呢?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Mytt extends JApplet
{
MyPanel p=new MyPanel();
public void init()
{
this.getContentPane().add(p);
}
}
class MyPanel extends JPanel implements MouseListener
{
JButton jb1=new JButton("击我");
JButton jb2=new JButton("按钮2");
public MyPanel()
{
this.add(jb1);
this.add(jb2);
jb1.addMouseListener(this);
jb2.addMouseListener(this);
}
@Override
public void mouseClicked(MouseEvent e) {
Object obj=e.getSource();//返回事件类
if(obj==jb1)
{
jb1.setEnabled(false);
jb1.setText("按钮1");
jb2.setEnabled(true);
jb2.setText("击我");
}
if(obj==jb2)
{
jb2.setEnabled(false);
jb2.setText("按钮2");
jb1.setEnabled(true);
jb1.setText("击我");
}
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
----------------解决方案--------------------------------------------------------