mousehandler.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 87 行

JAVA
87
字号
/*
 * $Id: MouseHandler.java,v 1.2 2004/01/30 23:00:12 lsantha Exp $
 */
package org.jnode.awt.peer;

import java.awt.Dimension;
import java.util.Collection;

import org.apache.log4j.Logger;
import org.jnode.driver.ApiNotFoundException;
import org.jnode.driver.Device;
import org.jnode.driver.DeviceUtils;
import org.jnode.driver.input.PointerAPI;
import org.jnode.driver.input.PointerEvent;
import org.jnode.driver.input.PointerListener;
import org.jnode.driver.video.HardwareCursorAPI;

/**
 * @author Ewout Prangsma (epr@users.sourceforge.net)
 */
public class MouseHandler implements PointerListener {

	/** My logger */
	private final Logger log = Logger.getLogger(getClass());
	private int x;
	private int y;
	private final HardwareCursorAPI hwCursor;
	private final PointerAPI pointerAPI;
	private final Dimension screenSize;

	/**
	 * Create a new instance
	 * 
	 * @param fbDevice
	 * @param screenSize
	 */
	public MouseHandler(Device fbDevice, Dimension screenSize) {
		HardwareCursorAPI hwCursor = null;
		Device pointerDevice = null;
		PointerAPI pointerAPI = null;
		try {
			hwCursor = (HardwareCursorAPI) fbDevice.getAPI(HardwareCursorAPI.class);
		} catch (ApiNotFoundException ex) {
			log.info("No hardware-cursor found on device " + fbDevice.getId());
		}
		if (hwCursor != null) {
			try {
				final Collection pointers = DeviceUtils.getDevicesByAPI(PointerAPI.class);
				if (!pointers.isEmpty()) {
					pointerDevice = (Device) pointers.iterator().next();
					pointerAPI = (PointerAPI) pointerDevice.getAPI(PointerAPI.class);
				}
			} catch (ApiNotFoundException ex) {
				log.error("Strange...", ex);
			}
		}
		this.hwCursor = hwCursor;
		this.pointerAPI = pointerAPI;
		this.screenSize = screenSize;
		if (pointerAPI != null) {
			log.info("Using PointerDevice " + pointerDevice.getId());
			hwCursor.setCursorVisible(true);
			hwCursor.setCursorPosition(x, y);
			pointerAPI.addPointerListener(this);
		}
	}

	/**
	 * Close this handler
	 */
	public void close() {
		if (pointerAPI != null) {
			pointerAPI.removePointerListener(this);
		}
	}

	/**
	 * @param event
	 * @see org.jnode.driver.input.PointerListener#pointerStateChanged(org.jnode.driver.input.PointerEvent)
	 */
	public void pointerStateChanged(PointerEvent event) {
		x = Math.min(screenSize.width - 1, Math.max(0, x + event.getX()));
		y = Math.min(screenSize.height - 1, Math.max(0, y + event.getY()));
		hwCursor.setCursorPosition(x, y);
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?