📄 drawboard.java
字号:
/**画板类。初始化画板,捕捉鼠标事件。
* 由454zhx编写 。May 20th
*/
package cn.edu.xmu.LHand;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.Graphics;
import java.util.ArrayList;
/**
*
* @author Administrator
*昏迷 怎么用啊
*/
public class DrawBoard extends JPanel implements
MouseListener,MouseMotionListener{
public static int buttonPressed = 0;
public static final Stroke[] STROKES = new Stroke[]{
new BasicStroke(1.0f),
new BasicStroke(2.0f),
new BasicStroke(5.0f),
new BasicStroke(7.5f),
new BasicStroke(10.0f)
};
public static float strokeIndex = 0; //指定选择的粗细
public static IShape currentShape = null; //用来指向继承他的各个子类
public static ArrayList IShapes = null; //存放画过的图
public static String strings;
public DrawBoard(){
IShapes = new ArrayList();
addMouseListener(this);
addMouseMotionListener(this);
setDoubleBuffered(true); //设置双缓冲
setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR)); //设置鼠标样式
this.setPreferredSize((new Dimension(700,600))); //设置工作区域
this.setBorder(BorderFactory.createRaisedBevelBorder()); //设置边框
this.setForeground(Color.BLACK);
this.setBackground(Color.WHITE);
setVisible(true);
}
public void clearBoard(){
IShapes.clear();
currentShape = null;
repaint();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
int i = IShapes.size();
Graphics2D g2D = (Graphics2D) g;
for(int j=0; j<i; j++){
((IShape)IShapes.get(j)).draw(g2D);
}
}
public void mousePressed(MouseEvent event){
Drawer.statusBar.setText(" |"
+event.getX()+","+event.getY()+"|");
if(DrawBoard.buttonPressed == 0)
return;
else if(event.getButton() == MouseEvent.BUTTON1){
switch(buttonPressed){
case 1:
strings = JOptionPane.showInputDialog(this,"Enter the strings");
currentShape = new Word(getForeground(), strokeIndex,
event.getX(), event.getY());
break;
case 2:
currentShape = new Line(getForeground(), strokeIndex,
event.getX(), event.getY());
break;
case 3:
currentShape = new Rect(getForeground(), strokeIndex,
event.getX(), event.getY());
break;
case 4:
currentShape = new RoundRect(getForeground(), strokeIndex,
event.getX(), event.getY());
break;
case 5:
currentShape = new Oval(getForeground(), strokeIndex,
event.getX(), event.getY());
break;
case 6:
if(currentShape == null)
currentShape = new Polygon(getForeground(), strokeIndex,
event.getX(), event.getY());
else{
currentShape.mousePressed(event);
repaint();
return;
}
break;
case 7:
currentShape = new PaintBrush(getForeground(), strokeIndex,
event.getX(), event.getY());
break;
case 8:
currentShape = new PolyLine(getForeground(), strokeIndex,
event.getX(), event.getY());
break;
case 9:
currentShape = new Eraser(getBackground(),strokeIndex,
event.getX(), event.getY());
break;
default:
break;
}
if(currentShape != null){
IShapes.add(currentShape);
repaint();
}
}
else
return;
}
public void mouseDragged(MouseEvent event){
Drawer.statusBar.setText(" |"
+event.getX()+","+event.getY()+"|");
if(currentShape == null)
return;
currentShape.mouseDragged(event);
repaint();
}
public void mouseReleased(MouseEvent event){
//这里无法判断什么时候 多边形绘画结束。 = =~!
if(currentShape != null && buttonPressed == 6){
currentShape.mouseReleased(event);
repaint();
}
else
currentShape = null;
return;
}
/*public static void nullPolygonShape(){
currentShape = null;
}*/
public void mouseClicked(MouseEvent event){}
public void mouseEntered(MouseEvent event){}
public void mouseExited(MouseEvent event){
Drawer.statusBar.setText(" |"+" |");
}
public void mouseMoved(MouseEvent event){
Drawer.statusBar.setText(" |"
+event.getX()+","+event.getY()+"|");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -