📄 desktop.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 + -