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

📄 paintboard.java

📁 this a java painter, a very simple painter. anyone who has interesting in java swing can download it
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import java.util.*;

/**
* @author aassd
*
* To change this generated comment edit the template variable "typecomment":
* Window>Preferences>Java>Templates.
* To enable and disable the creation of type comments go to
* Window>Preferences>Java>Code Generation.
*/

public class PaintBoard extends Canvas implements java.awt.event.MouseListener, java.awt.event.MouseMotionListener {
int srcX = 0;
int srcY = 0;

int lineToX = 0;
int lineToY = 0;

boolean bMousePressing = false;

java.util.Stack vShapes = new java.util.Stack();
java.util.Stack vDelShapes = new java.util.Stack();

private int command = 0;
private Color color;

public void undo() {
if (vShapes.size() > 0) {
Object shape = vShapes.pop();
vDelShapes.push(shape);
repaint();
}

}
public void redo() {
if (vDelShapes.size() > 0) {
Object shape = vDelShapes.pop();
vShapes.push(shape);
repaint();
}
}

public void setCommand(int command) {
this.command = command;
}
public void setColor(Color color) {
this.color = color;
}

public PaintBoard() {
this.addMouseListener(this);
this.addMouseMotionListener(this);
}

public void paint(Graphics g) {

Dimension size = size();
int width = size.width ;
int height = size.height;
g.setColor(Color.white);
g.fillRect(0,0, width,height);

Shape shape = null;
java.util.Enumeration enumeration = vShapes.elements();
g.setColor(Color.blue);
while (enumeration.hasMoreElements()) {
shape = (Shape) enumeration.nextElement();
shape.draw(g);
}


if (bMousePressing) {
g.setColor(color);
switch (command) {
case Command.LINE:
g.drawLine(srcX, srcY, lineToX, lineToY);
break;
case Command.RECTANGLE:
if (lineToX < srcX) {
if (lineToY < srcY) {
g.drawRect(lineToX, lineToY, srcX - lineToX , srcY - lineToY);
}
else {
g.drawRect(lineToX, srcY, srcX - lineToX, lineToY - srcY);
}
}
else {
if (lineToY < srcY) {
g.drawRect(srcX, lineToY, lineToX - srcX, srcY - lineToY);
}
else {
g.drawRect(srcX, srcY, lineToX - srcX, lineToY - srcY);
}
}
break;
case Command.CIRCLE:

int w = (int)java.lang.Math.sqrt((srcX - lineToX) * (srcX - lineToX) + (srcY - lineToY) * (srcY - lineToY));
g.drawArc(srcX - w/2, srcY - w/2, w, w, 0, 360);
break;
}//End switch(command)
}

}

public void mouseClicked(MouseEvent e) {
}

public void mousePressed(MouseEvent e) {
srcX = e.getX();
srcY = e.getY();
bMousePressing = true;
}

public void mouseReleased(MouseEvent e) {
lineToX = e.getX();
lineToY = e.getY();
bMousePressing = false;
switch (command) {
case Command.LINE:
ILine line = new ILine(srcX, srcY, lineToX, lineToY, color);
vShapes.push(line);
break;
case Command.RECTANGLE:
IRectangle rectangle = null;
if (lineToX < srcX) {
if (lineToY < srcY) {
rectangle = new IRectangle(lineToX, lineToY, srcX - lineToX , srcY - lineToY, color);
}
else {
rectangle = new IRectangle(lineToX, srcY, srcX - lineToX, lineToY - srcY, color);
}
}
else {
if (lineToY < srcY) {
rectangle = new IRectangle(srcX, lineToY, lineToX - srcX, srcY - lineToY, color);
}
else {
rectangle = new IRectangle(srcX, srcY, lineToX - srcX, lineToY - srcY, color);
}
}
vShapes.push(rectangle);
break;
case Command.CIRCLE:
int w = (int)java.lang.Math.sqrt((srcX - lineToX) * (srcX - lineToX) + (srcY - lineToY) * (srcY - lineToY));
ICircle circle = new ICircle(srcX - w/2, srcY - w/2, w, w, color);
vShapes.push(circle);
break;
} //End switch(command)

repaint();
}

public void mouseEntered(MouseEvent e) {
}

public void mouseExited(MouseEvent e) {
}

public void mouseDragged(MouseEvent e) {
lineToX = e.getX();
lineToY = e.getY();
repaint();
}

public void mouseMoved(MouseEvent e) {
}


}

⌨️ 快捷键说明

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