自己写了一个事件类,和事件监听器,为什么这个程序运行时说事件捕获不了?

imoldcat 2005-07-03 03:26:29
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;

public class SimpleQueue
{
public static void main(String[] agrs)
{
MyFrame frame = new MyFrame();
frame.setPanel(new MyPanel());
frame.setTitle("Simple Queue");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}

class MyFrame extends JFrame
{
public MyFrame()
{
try
{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.updateComponentTreeUI(this);
}
catch(Exception e)
{
e.printStackTrace();
}

Toolkit t = Toolkit.getDefaultToolkit();
Dimension d = t.getScreenSize();
int width = d.width;
int height = d.height;

setBounds(width/4, height/4, width/2, height/2);
}

public void setTitle(String t)
{
super.setTitle(t);
}

public void setPanel(JPanel panel)
{
Container c = getContentPane();
c.add(panel);
}
}


class MyPanel extends JPanel
{
public MyPanel()
{
JButton b = new MyButton();
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
SimpleEvent el = new SimpleEvent("try my own");
EventQueue queue = Toolkit.getDefaultToolkit().getSystemEventQueue();
queue.postEvent(el);
}
});
add(b);
}

class MyButton extends JButton implements SimpleListener
{
private EventListenerList listeners;

public MyButton()
{
super("My Own Event");
}

public void simpleAction(SimpleEvent e)
{
setBackground(Color.BLACK);
}

public void addSimpleListener(SimpleListener l)
{
listenerList.add(SimpleListener.class, l);
}

public void removeSimpleListener(SimpleListener l)
{
listenerList.remove(SimpleListener.class, l);
}

public void processEvent(AWTEvent event)
{
if (event instanceof SimpleEvent)
{
EventListener[] listeners = listenerList.getListeners(SimpleListener.class); //得到所有此类型的事件监听器
for (int i = 0; i < listeners.length; i++)
{
((SimpleListener)listeners[i]).simpleAction((SimpleEvent)event); //逐个的发送方法,典型的观察者模式的应用
}
}
else
{
super.processEvent(event); //如果不是该类,就让系统处理Event
}
}

}
}





class SimpleEvent extends AWTEvent
{
public SimpleEvent(String s)
{
super(s, SIMPLE_EVENT);
}

public static final int SIMPLE_EVENT = AWTEvent.RESERVED_ID_MAX + 5555;
}

interface SimpleListener extends EventListener
{
public void simpleAction(SimpleEvent e);
}


...全文
85 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
imoldcat 2005-07-07
  • 打赏
  • 举报
回复
谢谢,确实是刚刚接触Swing,上面的写的东西用了从前写的一些Frame,Panel之类的东西。问题已经解决了。gtlang78()的方案很同意。还有一处错误在Button没有addSimpleListener。
^_^ 还是谢谢了。初学Swing,大家如果有什么好点建议,敬请赐教。 :)
gtlang78 2005-07-04
  • 打赏
  • 举报
回复
class SimpleEvent extends AWTEvent
{
public SimpleEvent(MyButton button)
{
super(button, SIMPLE_EVENT);
}

public static final int SIMPLE_EVENT = AWTEvent.RESERVED_ID_MAX + 5555;
}
frenchletter 2005-07-03
  • 打赏
  • 举报
回复
Your code is just so difficult to read.
I find you just have little about java swing.
So refer to java tutorial for more information at first.
【2025亚太杯B题】辐射制冷技术的建模与优化——亚太地区大学生数学建模竞赛(思路、代码、论文持续更新中.......)内容概要:本文档围绕2025亚太杯B题“辐射制冷技术的建模与优化”展开,提供数学建模竞赛所需的思路、代码和论文作支持,内容持续更新。文档列举了大量科研仿真资源,涵盖智能优化算法、机学习、路径规划、电力系统、信号处理等多个技术领域,重点服务于数学建模参赛者和技术研究人员。资源以Matlab和Python为主要实现工具,包含多种算法在实际问题中的应用案例,如粒子群优化、遗传算法、卡尔曼滤波、深度学习等,并提供配套代码和仿真模型。同时附有网盘链接,便于获取完整资料。; 适合人群:参加数学建模竞赛的本科生、研究生,具备一定编程基础(尤其是Matlab/Python)和数学建模能力的科研初学者;从事智能优化、电力系统、信号处理等相关领域的技术人员。; 使用场景及目标:①辅助完成亚太杯等数学建模竞赛题目,特别是B题辐射制冷技术的建模与优化;②为科研项目提供算法实现参考,提升仿真效率与模型精度;③学习多种智能算法在工程问题中的具体应用方式。; 阅读建议:建议按目录顺序系统浏览,结合提供的代码实例进行调试与复现,重点关注与自身研究方向相关的模块;充分利用网盘资源,对照思路与代码深化理解,提升建模与编程实战能力。
本资源库收录的嵌入式系统实践项目均经过严格验证,确保代码与工程文件可直接运行并实现预设功能。所有技术方案均采用模块化设计理念,便于开发者进行快速移植和二次开发。项目资料包内含完整源代码、工程配置文件及详细的功能明文档,具体技术细节可通过资源详情页查阅。 笔者在嵌入式系统架构设计与物联网应用开发领域具备多年实践经验。针对开发过程中遇到的技术难题,可提供专业的技术支持服务。若需获取嵌入式开发相关的工具链配置指南或技术文献资料,本人亦可协助提供系统的学习资源。 对于嵌入式硬件平台搭建,建议初学者可采用模块化组装方案:通过标准接口连接面包板、杜邦线及外设模块,无需进行PCB电路设计即可完成硬件环境搭建。配合提供的固件程序,即可完整复现项目功能。 本系列项目资源适用于多种技术实践场景:包括但不限于产品原型开发、毕业设计课题、课程实验任务、学术竞赛项目、工程实训考核及创新实践训练等。开发者既可完整复现现有项目功能,也可基于现有架构进行功能扩展与优化迭代。所有技术实现均遵循嵌入式系统开发规范,确保项目的可维护性与可扩展性。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧