发布时间 : 星期一 文章JAVA课程设计画图软件更新完毕开始阅读232af5ebd4d8d15abe234e96
package hh;
import java.awt.*;
import java.awt.event.*; import java.util.*;
import javax.swing.*;
import java.awt.geom.*;
class Point {
int x,y; Color col; int tool; int boarder;
Point(int x, int y, Color col, int tool, int boarder) {
this.x = x; this.y = y; this.col = col; this.tool = tool;
this.boarder = boarder; } } /*
*BasicStroke *Choice *validate(); **/
class paintboard extends Frame implements ActionListener, MouseMotionListener, MouseListener, ItemListener {
int xx0=0,yy0=0; int xx1=0,yy1=0; int type=6;
int x = -1, y = -1;
int con = 1; //画笔大小 int Econ = 5; //橡皮大小 int toolFlag = 0; //toolFlag:工具标记
//toolFlag工具对应表: //(0--画笔);(1--橡皮);(2--清除);
//(3--直线);(4--圆);(5--矩形);
Color c = new Color(0,0,0); //画笔颜色
BasicStroke size = new BasicStroke (con,BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL);//画笔粗细
Point cutflag = new Point(-1, -1, c, 6, con);//截断标志 Vector paintInfo = null;//点信息向量组 int n = 1;
// *工具面板--画笔,直线,圆,矩形,多边形,橡皮,清除*/ Panel toolPanel;
Button eraser, drLine,drCircle,drRect; Button clear ,pen;
Choice ColChoice,SizeChoice,EraserChoice; Button colchooser;
Label 颜色,大小B,大小E;
paintboard(String s)//构造函数 {
super(s);
addMouseMotionListener(this); addMouseListener(this); paintInfo = new Vector();
/*各工具按钮及选择项*/
//颜色选择
ColChoice = new Choice(); ColChoice.add(\黑色\ ColChoice.add(\红色\ ColChoice.add(\蓝色\ ColChoice.add(\绿色\
ColChoice.addItemListener(this); //画笔大小选择
SizeChoice = new Choice(); SizeChoice.add(\ SizeChoice.add(\ SizeChoice.add(\ SizeChoice.add(\ SizeChoice.add(\
SizeChoice.addItemListener(this); //橡皮大小选择
EraserChoice = new Choice();
EraserChoice.add(\ EraserChoice.add(\ EraserChoice.add(\ EraserChoice.add(\
EraserChoice.addItemListener(this);
toolPanel = new Panel(); clear = new Button(\清除\ eraser = new Button(\橡皮\ pen = new Button(\画笔\
drLine = new Button(\画直线\ drCircle = new Button(\画圆形\ drRect = new Button(\画矩形\
colchooser = new Button(\显示调色板\
//各组件事件监听
clear.addActionListener(this); eraser.addActionListener(this); pen.addActionListener(this); drLine.addActionListener(this); drCircle.addActionListener(this); drRect.addActionListener(this);
colchooser.addActionListener(this);
颜色 = new Label(\画笔颜色\
大小B = new Label(\画笔大小\ 大小E = new Label(\橡皮大小\ //面板添加组件
toolPanel.add(pen); toolPanel.add(drLine); toolPanel.add(drCircle); toolPanel.add(drRect);
toolPanel.add(颜色); toolPanel.add(ColChoice); toolPanel.add(大小B); toolPanel.add(SizeChoice); toolPanel.add(colchooser); toolPanel.add(eraser);
toolPanel.add(大小E); toolPanel.add(EraserChoice); toolPanel.add(clear);
//工具面板到APPLET面板
add(toolPanel,BorderLayout.NORTH); setBounds(60,60,800,650); setVisible(true);
validate();
//dialog for save and load
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) { System.exit(0);} }); }
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D)g; Point p1,p2;
n = paintInfo.size(); if(toolFlag==2)
g.clearRect(0,0,getSize().width,getSize().height);//清除
switch(type) {
case 3:
Line2D line = new Line2D.Double(xx0,yy0,xx1,yy1); g2d.draw(line); break; case 4:
Ellipse2D ellipse1 = new Ellipse2D.Double(xx0, Math.abs(xx1-xx0) ,Math.abs(yy1-yy0)); g2d.draw(ellipse1); break; case 5:
Rectangle2D rect1 = new Rectangle2D.Double(xx0, Math.abs(xx1-xx0) , Math.abs(yy1-yy0)); g2d.draw(rect1); break;
default:break; }
for(int i=0; i p1 = (Point)paintInfo.elementAt(i); p2 = (Point)paintInfo.elementAt(i+1); size = new BasicStroke(p1.boarder,BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL); g2d.setColor(p1.col); g2d.setStroke(size); yy0, yy0,