📄 pictureboard.java
字号:
/*
* 创建日期 2005-11-5
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package src;
/**
* @author flash
*
* TODO 要更改此生成的类型注释的模板,请转至 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class PictureBoard extends JPanel implements MouseListener,
MouseMotionListener {
//toobar
public int line = 1;
public int rect = 0;
public int oval = 0;
public int poly = 0;
public int all_clear = 0;
public Color fill_color = Color.WHITE;
public Color line_color = Color.BLUE;
public Color back_color = Color.gray;
public Stroke line_stroke = null;
public Stroke xiangpi_stroke = null;
//工具定义
private final int NULL = 0;
private final int PENCIL = 1;
private final int LINE = 2;
private final int RECTANGLE = 3;
private final int CIRCLE = 4;
private final int POLYGON = 5;
private final int ERASE = 6;
public int TOOL_CHOOSED = 0;
public Color back = null;
//定义一个造型工具
Picture picture_target = null;
CUi cui = null;
//记忆图形工具
PictureMemory picturememory_array = null;
PictureMemory del_picturememory_array = null;
//构造函数
public PictureBoard(CUi cui) {
this.cui = cui;
line_stroke = new BasicStroke(1.0f);
xiangpi_stroke = new BasicStroke(1.0f);
this.setBorder(BorderFactory.createEtchedBorder());
picturememory_array = new PictureMemory();
del_picturememory_array = new PictureMemory();
back = this.getForeground();
this.addMouseListener(this);
this.addMouseMotionListener(this);
}
//初始化不同对象
public void mousePressed(MouseEvent ep) {
cui.status.setText(label_text()+ep.getX()+", "+ep.getY());
if (ep.getButton() == MouseEvent.BUTTON1) {
switch (TOOL_CHOOSED) {
case NULL://选择箭头工具
this.setCursor(Cursor.getDefaultCursor());
break;
case PENCIL://选择铅笔工具
this.setCursor(Cursor
.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
picture_target = new Pencil(line_stroke, line_color, ep.getX(),
ep.getY());
break;
case LINE://选择直线工具
this.setCursor(Cursor
.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
picture_target = new Line_(line_stroke, line_color, ep.getX(),
ep.getY(), line);
System.out.println(picture_target);
break;
case RECTANGLE://选择矩形工具
this.setCursor(Cursor
.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
picture_target = new Rectangle_(line_stroke, line_color,
fill_color, ep.getX(), ep.getY(), rect);
break;
case CIRCLE://选择圆工具
this.setCursor(Cursor
.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
picture_target = new Circle(line_stroke, line_color,
fill_color, ep.getX(), ep.getY(), oval);
break;
case POLYGON://选择多边形
this.setCursor(Cursor
.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
picture_target = new Polygon_(line_stroke, line_color,
fill_color, ep.getX(), ep.getY(), poly);
break;
case ERASE:
back = this.getBackground();
this.setCursor(Cursor
.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
picture_target = new Erase(xiangpi_stroke, back, ep.getX(), ep
.getY());
}
if (picture_target != null)
picturememory_array.addObject(picture_target);
repaint();
} else if (ep.getButton() == MouseEvent.BUTTON3) {
//弹出菜单
}
}
public void mouseDragged(MouseEvent ed) {
cui.status.setText(label_text()+ed.getX()+", "+ed.getY());
if (picture_target != null) {
picture_target.dataCollect(ed);
}
repaint();
}
public void mouseMoved(MouseEvent e) {
cui.status.setText(label_text()+e.getX()+", "+e.getY());
}
public void mouseExited(MouseEvent e) {
cui.status.setText(label_text()+e.getX()+", "+e.getY());
}
public void mouseReleased(MouseEvent e) {
cui.status.setText(label_text()+e.getX()+", "+e.getY());
if (e.getButton() == MouseEvent.BUTTON1)
picture_target = null;
}
public void mouseEntered(MouseEvent e) {
cui.status.setText(label_text()+e.getX()+", "+e.getY());
}
public void mouseClicked(MouseEvent e) {
cui.status.setText(label_text()+e.getX()+", "+e.getY());
}
public void paint(Graphics g) {
super.paint(g);
this.setBackground(back_color);
int size_ = picturememory_array.getSize();
Graphics2D g1 = (Graphics2D) g;
if (size_ != 0) {
for (int i = 0; i < size_; i++) {
((Picture) (picturememory_array.getObject(i))).drawSelf(g1);
//System.out.println(((Picture)(picturememory_array.getObject(i))));
}
}
}
private String label_text(){
String x = "";
switch (TOOL_CHOOSED) {
case 0://选择箭头工具
x="没有选择工具"+" 鼠标位置:";
break;
case 1://选择铅笔工具
x="选择铅笔工具"+" 鼠标位置:";
break;
case 2://选择直线工具
x="选择直线工具"+" 鼠标位置:";
break;
case 3://选择矩形工具
x= "选择矩形工具"+" 鼠标位置:";
break;
case 4://选择圆工具
x="选择圆工具"+" 鼠标位置:";
break;
case 5://选择多边形
x="选择多边形工具"+" 鼠标位置:";
break;
case 6:
x="选择橡皮工具"+" 鼠标位置:";
}
return x;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -