swingserver.java
来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 116 行
JAVA
116 行
/*
* $Id: SwingServer.java,v 1.4 2004/02/28 09:20:54 epr Exp $
*/
package org.jnode.test.gui.swing;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import javax.swing.JPanel;
import javax.swing.event.MouseInputListener;
import org.jnode.wt.desktop.JNDesktop;
import org.jnode.wt.desktop.JNDesktopManager;
import org.jnode.wt.desktop.JNodeEvent;
import org.jnode.wt.events.JNodeMouseEvent;
/**
* Server for JNComponents. This class creates the connection between JNDesktopManager and
* FrameBuffer devices.
*
* @author Ewout Prangsma (epr@users.sourceforge.net)
*/
public class SwingServer extends JPanel {
final JNDesktop desktop;
JNDesktopManager desktopManager = JNDesktopManager.getDesktopManager();
Mouser mouser = new Mouser();
public SwingServer() {
// this.desktop = new JNDesktop();
desktopManager.addDesktop();
this.desktop = desktopManager.getCurrentDesktop();
addMouseListener(mouser);
addMouseMotionListener(mouser);
Runnable repainter = new Runnable() {
public void run() {
while (true) {
try {
Thread.sleep(100);
SwingServer.this.repaint();
} catch (InterruptedException e) {
e.printStackTrace(); //To change body of catch statement use Options | File Templates.
}
}
}
};
Thread t = new Thread(repainter);
t.start();
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
desktop.invalidate();
desktop.validate();
desktop.paint(g);
desktop.update(g);
}
final void doUpdate() {
super.repaint();
}
class Mouser implements MouseInputListener {
org.jnode.wt.components.JNComponent targetComponent;
private JNodeEvent toJNodeEvent(MouseEvent e) {
org.jnode.wt.components.JNComponent component = desktop.getComponentAt(e.getX(), e.getY());
if (component == null)
component = desktop;
return toJNodeEvent(e, component);
}
private JNodeEvent toJNodeEvent(MouseEvent e, org.jnode.wt.components.JNComponent target) {
JNodeEvent event = new JNodeMouseEvent(target, e.getID(), e.getX(), e.getY(), e.getButton());
this.targetComponent = target;
return event;
}
public void mouseClicked(MouseEvent e) {
desktopManager.postEvent(toJNodeEvent(e));
doUpdate();
}
public void mousePressed(MouseEvent e) {
desktopManager.postEvent(toJNodeEvent(e));
doUpdate();
}
public void mouseReleased(MouseEvent e) {
desktopManager.postEvent(toJNodeEvent(e));
doUpdate();
}
public void mouseEntered(MouseEvent e) {
desktopManager.postEvent(toJNodeEvent(e));
doUpdate();
}
public void mouseExited(MouseEvent e) {
desktopManager.postEvent(toJNodeEvent(e));
doUpdate();
}
public void mouseDragged(MouseEvent e) {
desktopManager.postEvent(toJNodeEvent(e, targetComponent));//don't switch targets on a drag
doUpdate();
}
public void mouseMoved(MouseEvent e) {
desktopManager.postEvent(toJNodeEvent(e));
doUpdate();
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?