⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 desktop.java

📁 原创
💻 JAVA
字号:
package serviceServer;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;

import javax.swing.JComponent;
import javax.swing.Scrollable;
import javax.swing.SwingConstants;

public class DeskTop extends JComponent implements Runnable, Scrollable,
		MouseListener, KeyListener {
	private static final long serialVersionUID = 1L;

	private EventSenderHome mEsender;
	private BufferedImage mImage;

	private int maxUnitIncrement = 5;

	public void renderImage(BufferedImage image) {
		mImage = image;

		synchronized (this) {
			this.notify();
		}
	}

	public DeskTop() {
		setBackground(Color.blue);

		// Let the user scroll by dragging to outside the window.
		setAutoscrolls(true); // enable synthetic drag events
		addMouseListener(this);
		addKeyListener(this);
		setFocusable(true);

		mEsender = EventSenderHome.getInstance();
	}

	public void run() {
		while (Common.sContinue) {
			synchronized (this) {
				try {
					this.wait();
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}

			render();
		}
	}

	protected void render() {
		Graphics2D g = (Graphics2D)getGraphics();
		if (g != null) {

			Graphics2D imageGraphics = (Graphics2D)mImage.getGraphics();

			// Draw this component offscreen.
			paint(imageGraphics);

			// Now put the offscreen image on the screen.
			g.drawImage(mImage, 0, 0, null);

			// Clean up.
			imageGraphics.dispose();
			g.dispose();
		}
	}

	public Dimension getPreferredSize() {
		if (Common.sInit) {
			return new Dimension(1024, 768);
		}

		return new Dimension(Common.sScreenWidth, Common.sScreenHeight);
	}

	// Returns the preferred size of the viewport for a view component.
	public Dimension getPreferredScrollableViewportSize() {
		return getPreferredSize();
	}

	// Scrolling containers, like JScrollPane, will use this method each time
	// the user requests a unit scroll.
	public int getScrollableUnitIncrement(Rectangle visibleRect,
			int orientation, int direction) {
		// Get the current position.
		int currentPosition = 0;
		if (orientation == SwingConstants.HORIZONTAL) {
			currentPosition = visibleRect.x;
		} else {
			currentPosition = visibleRect.y;
		}

		// Return the number of pixels between currentPosition
		// and the nearest tick mark in the indicated direction.
		if (direction < 0) {
			int newPosition = currentPosition
					- (currentPosition / maxUnitIncrement) * maxUnitIncrement;
			return (newPosition == 0) ? maxUnitIncrement : newPosition;
		} else {
			return ((currentPosition / maxUnitIncrement) + 1)
					* maxUnitIncrement - currentPosition;
		}
	}

	public int getScrollableBlockIncrement(Rectangle visibleRect,
			int orientation, int direction) {
		if (orientation == SwingConstants.HORIZONTAL) {
			return visibleRect.width - maxUnitIncrement;
		} else {
			return visibleRect.height - maxUnitIncrement;
		}
	}

	public boolean getScrollableTracksViewportWidth() {
		return false;
	}

	public boolean getScrollableTracksViewportHeight() {
		return false;
	}

	public void setMaxUnitIncrement(int pixels) {
		maxUnitIncrement = pixels;
	}

	// mouseListener
	public void mouseClicked(MouseEvent e) {
		mEsender.sendEvent(e);
	}
	
	public void mousePressed(MouseEvent e) {
		mEsender.sendEvent(e);
	}

	public void mouseReleased(MouseEvent e) {
		mEsender.sendEvent(e);
	}

	// keyListener
	public void keyPressed(KeyEvent e) {
		mEsender.sendEvent(e);
	}

	public void keyReleased(KeyEvent e) {
		mEsender.sendEvent(e);
	}

	public void keyTyped(KeyEvent e) {
//		mEsender.sendEvent(e);
	}

	

	public void mouseEntered(MouseEvent e) {
		
	}

	public void mouseExited(MouseEvent e) {
	}

}

⌨️ 快捷键说明

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