jnodeeventqueue.java
来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 87 行
JAVA
87 行
/*
* $Id: JNodeEventQueue.java,v 1.10 2004/02/26 21:17:16 lsantha Exp $
*/
package org.jnode.wt.desktop;
import org.jnode.wt.events.JNodeMouseEvent;
import org.jnode.wt.events.JNComponentEvent;
import java.util.List;
import java.util.ArrayList;
import java.util.ListIterator;
/**
* @author vali
*/
public class JNodeEventQueue {
/** The queued events */
private final List events = new ArrayList();
/** The event dispatcher thread */
private final JNodeEventQueueThread dispatchThread = new JNodeEventQueueThread(this);
/**
* Initialize this instance.
*/
public JNodeEventQueue() {
dispatchThread.start();
}
/**
* Posts a new event to the queue.
*
* @param evt
* The event to post to the queue.
*
*/
public synchronized void postEvent(JNodeEvent evt) {
// if mouse move event than remove all the previos ones
int id = evt.getID();
if (
id == JNodeMouseEvent.MOUSE_MOVED ||
id == JNodeMouseEvent.MOUSE_DRAGGED ||
id == JNComponentEvent.COMPONENT_MOVED ||
id == JNComponentEvent.COMPONENT_RESIZED
) {
aggregateEvents(evt);
}
events.add(evt);
notify();
}
public synchronized void aggregateEvents(JNodeEvent event) {
for (ListIterator iter = events.listIterator(); iter.hasNext();) {
JNodeEvent element = (JNodeEvent) iter.next();
if (element.getID() == event.getID())
iter.remove();
}
}
/**
* Returns the next event in the queue. This method will block until an event is available or
* until the thread is interrupted.
*
* @return The next event in the queue.
*
* @exception InterruptedException
* If this thread is interrupted while waiting for an event to be posted to the
* queue.
*/
public synchronized JNodeEvent getNextEvent() throws InterruptedException {
while (events.isEmpty()) {
wait(1000);
}
return (JNodeEvent) events.remove(0);
}
protected void dispatchEvent(JNodeEvent evt) {
if (evt.getSource() instanceof org.jnode.wt.components.JNComponent) {
((org.jnode.wt.components.JNComponent) evt.getSource()).dispatchEvent(evt);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?