Tag: 事件

Java自定义事件处理程序和侦听器

我目前正在使用Socket.io的Java实现,可在此处获取: netty-socketio 我已经启动并运行了服务器,它在客户端和服务器之间很好地接收/发送消息,但是我需要在接收到某些消息时触发事件,这就是我感到困惑的地方。 这是我的代码: server.addEventListener(“message”, clientData.class, new DataListener() { @Override public void onData(SocketIOClient client, clientData data, AckRequest ackRequest) throws Exception { System.out.println(“Message from client: ” + data.getMessage()); } }); public class clientData{ String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } 基本上我想要发生的是当从客户端收到特定消息时,我需要在另一个类中运行一个函数。 我花了最近两个小时阅读Observable , Observer […]

等待Java活动 – 有多难?

我有一个线程,不时更新它的状态,我想要第二个线程能够等待第一个线程完成。 像这样的东西: Thread 1: while(true) { …do something… foo.notifyAll() …wait for some condition that might never happen… … } Thread 2: … foo.wait(); … 现在这看起来很好,除非线程1的notifyAll()在线程2的wait()之前运行,在这种情况下,线程2等待直到线程1 再次通知(这可能永远不会发生)。 我的解决方案: a)我可以使用CountDownLatch或Future,但两者都存在问题,即它们本身只运行一次 。 也就是说,在Thread 1的while循环中,我需要创建一个新的foo来等待每次,而Thread 2需要询问哪个foo要等待。 我对简单的写作感觉不好 while(true) { foo = new FutureTask(); … foo.set(…); …wait for a condition that might never be set… … } 因为我担心在foo = new […]

程序在java中退出时调用函数

我希望每次用户退出程序时保存程序设置。 所以我需要一种方法来在用户退出程序时调用一个函数。 我怎么做? 我使用的是Java 1.5。

从普通Java事件创建Observable

从传统的Java事件模式创建Rx-Java Observable的最佳方法是什么? 也就是说,给定 class FooEvent { … } interface FooListener { void fooHappened(FooEvent arg); } class Bar { public void addFooListener(FooListener l); public void removeFooListener(FooListener l); } 我想实施 Observable fooEvents(Bar bar); 我想出的实现是: Observable fooEvents(Bar bar) { return Observable.create(new OnSubscribeFunc() { public Subscription onSubscribe(Observer obs) { FooListener l = new FooListener() { public void fooHappened(FooEvent arg) […]

AWT窗口关闭监听器/事件

如果这是一个n00b问题,我很抱歉,但是一旦我创建了Window监听器,窗口事件和其他所有内容,我就花了太长时间,如何指定要调用的方法? 这是我的代码: private static void mw() { Frame frm = new Frame(“Hello Java”); WindowEvent we = new WindowEvent(frm, WindowEvent.WINDOW_CLOSED); WindowListener wl = null; wl.windowClosed(we); frm.addWindowListener(wl); TextField tf = new TextField(80); frm.add(tf); frm.pack(); frm.setVisible(true); } 我正在尝试获取一个URL,并下载它,我已经完成了其他所有工作,我只是想让窗口关闭。

Java:忽略单击双击?

任何人都可以想到一个很好的方法来忽略在Java中双击所带来的单击? 我希望每个人都有不同的行为: 单击点击点击点上的十字准线 双击选择屏幕上的对象,但不应在点击点上绘制十字准线 ……谁能想到办法做到这一点? 某种计时器设置可能吗? 一个想法赞赏:-) ……是的,我知道我犯了一个最令人发指的可用性/用户界面失礼。 编辑#2: 虽然这可以解决由于计时器引起的延迟 – 我正在放弃这个解决方案,并使用中键单击进行选择而不是双击… 编辑: 谢谢cgull – 这是我能够想出的,因为你确认没有简单的方法来做到这一点(请注意,如果我设置计时器 200件工作只是peachy): public void mouseClicked(MouseEvent e) { System.out.println( “Click at (” + e.getX() + “:” + e.getY() + “)” ); if (e.getClickCount() == 2) { System.out.println( ” and it’s a double click!”); wasDoubleClick = true; }else{ Integer timerinterval = (Integer) […]

通用,注释驱动的事件通知框架

虽然Java之前的简单,界面驱动的事件通知框架已经存在于寒武纪之前(例如java.beans.PropertyChangeSupport),但是框架使用注释驱动的事件通知变得越来越流行。 有关示例,请参阅JBossCache 2.2 。 侦听器类对其侦听器方法进行了注释,而不是符合严格的接口。 这更容易编程,更容易阅读,因为您不必编写您不感兴趣的侦听器回调的空实现(是的,我知道侦听器适配器超类)。 以下是JBossCache文档中的示例: @CacheListener public class MyListener { @CacheStarted @CacheStopped public void cacheStartStopEvent(Event e) { switch (e.getType()) { case Event.Type.CACHE_STARTED: System.out.println(“Cache has started”); break; case Event.Type.CACHE_STOPPED: System.out.println(“Cache has stopped”); break; } } @NodeCreated @NodeRemoved @NodeVisited @NodeModified @NodeMoved public void logNodeEvent(NodeEvent ne) { log(“An event on node ” + ne.getFqn() + ” […]

检测Java应用程序何时关闭

我试图检测Java应用程序即将关闭的时间,以便我可以执行释放资源的方法,我已经在C#中完成了如下操作: //Intercept when the application closes private void Form1_FormClosing(object sender, FormClosingEventArgs e) { //Reclaim resources from MIDI usage if (MIDIControl.CleanUp()) { Logger.Add(“Closed resources successfully on Form Close \n”); } else { Logger.Add(“Failed to close all resources on Form Close.”); } } 我试图在Java版本中执行相同的技术,但它似乎不起作用,我已经尝试过调试,它不会挂在方法名称上的断点上: //Intercept when the application closes public void windowClosing(WindowEvent we) { //Reclaim resources from […]

在运行时访问generics类型参数?

事件调度程序界面 public interface EventDispatcher { EventListener addEventListener(EventListener l); void removeEventListener(EventListener l); } 履行 public class DefaultEventDispatcher implements EventDispatcher { @SuppressWarnings(“unchecked”) private Map<Class, Set> listeners = new HashMap<Class, Set>(); public void addSupportedEvent(Class eventType) { listeners.put(eventType, new HashSet()); } @Override public EventListener addEventListener(EventListener l) { Set lsts = listeners.get(T); // ****** error: cannot resolve T if (lsts […]

找出类的构造函数中的实例化对象

如何从java中的构造函数中获取实例化对象? 我想存储一些GUI类的父对象的引用,以模拟事件冒泡 – 调用父级处理程序 – 但我不想更改所有现有代码。