1、java编的画板的源代码import java.applet.*; import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import java.awt.geom.*; import java.io.*; class Point implements Serializable int x,y; Color col; int tool; int boarder; Point(int x, int y, Color col, int tool, int boarder) this.
2、x = x; this.y = y; this.col = col; this.tool = tool; this.boarder = boarder; class paintboard extends Frame implements ActionListener,MouseMotionListener,MouseListener,ItemListener int x = -1, y = -1; int con = 1;/画笔大小 int Econ = 5;/橡皮大小 int toolFlag = 0;/toolFlag:工具标记 /toolFlag工具对应表: /(0-画笔);(1-橡皮)
3、;(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; FileInputStream picIn = null; FileOutputStream picO
4、ut = null; ObjectInputStream VIn = null; ObjectOutputStream VOut = null; / *工具面板-画笔,直线,圆,矩形,多边形,橡皮,清除*/ Panel toolPanel; Button eraser, drLine,drCircle,drRect; Button clear ,pen; Choice ColChoice,SizeChoice,EraserChoice; Button colchooser; Label 颜色,大小B,大小E; /保存功能 Button openPic,savePic; FileDialog o
5、penPicture,savePicture; paintboard(String s) super(s); addMouseMotionListener(this); addMouseListener(this); paintInfo = new Vector(); /*各工具按钮及选择项*/ /颜色选择 ColChoice = new Choice(); ColChoice.add(black); ColChoice.add(red); ColChoice.add(blue); ColChoice.add(green); ColChoice.addItemListener(this); /
6、画笔大小选择 SizeChoice = new Choice(); SizeChoice.add(1); SizeChoice.add(3); SizeChoice.add(5); SizeChoice.add(7); SizeChoice.add(9); SizeChoice.addItemListener(this); /橡皮大小选择 EraserChoice = new Choice(); EraserChoice.add(5); EraserChoice.add(9); EraserChoice.add(13); EraserChoice.add(17); EraserChoice.a
7、ddItemListener(this); / toolPanel = new Panel(); clear = new Button(清除); eraser = new Button(橡皮); pen = new Button(画笔); drLine = new Button(画直线); drCircle = new Button(画圆形); drRect = new Button(画矩形); openPic = new Button(打开图画); savePic = new Button(保存图画); colchooser = new Button(显示调色板); /各组件事件监听 cle
8、ar.addActionListener(this); eraser.addActionListener(this); pen.addActionListener(this); drLine.addActionListener(this); drCircle.addActionListener(this); drRect.addActionListener(this); openPic.addActionListener(this); savePic.addActionListener(this); colchooser.addActionListener(this); 颜色 = new La
9、bel(画笔颜色,Label.CENTER); 大小B = new Label(画笔大小,Label.CENTER); 大小E = new Label(橡皮大小,Label.CENTER); /面板添加组件 toolPanel.add(openPic); toolPanel.add(savePic); toolPanel.add(pen); toolPanel.add(drLine); toolPanel.add(drCircle); toolPanel.add(drRect); toolPanel.add(颜色); toolPanel.add(ColChoice); toolPanel.ad
10、d(大小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,900,600); setVisible(true); validate(); /dialog for save and load openPicture
11、= new FileDialog(this,打开图画,FileDialog.LOAD); openPicture.setVisible(false); savePicture = new FileDialog(this,保存图画,FileDialog.SAVE); savePicture.setVisible(false); openPicture.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) openPicture.setVisible(false); ); savePicture
12、.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) savePicture.setVisible(false); ); 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
13、.size(); if(toolFlag=2) g.clearRect(0,0,getSize().width,getSize().height);/清除 for(int i=0; in ;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); if(p
14、1.tool=p2.tool) switch(p1.tool) case 0:/画笔 Line2D line1 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y); g2d.draw(line1); break; case 1:/橡皮 g.clearRect(p1.x, p1.y, p1.boarder, p1.boarder); break; case 3:/画直线 Line2D line2 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y); g2d.draw(line2); break; case 4:/画圆 Ell
15、ipse2D ellipse = new Ellipse2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y); g2d.draw(ellipse); break; case 5:/画矩形 Rectangle2D rect = new Rectangle2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y); g2d.draw(rect); break; case 6:/截断,跳过 i=i+1; break; default : /end switch
16、 /end if /end for public void itemStateChanged(ItemEvent e) if(e.getSource()=ColChoice)/预选颜色 String name = ColChoice.getSelectedItem(); if(name=black) c = new Color(0,0,0); else if(name=red) c = new Color(255,0,0); else if(name=green) c = new Color(0,255,0); else if(name=blue) c = new Color(0,0,255)
17、; else if(e.getSource()=SizeChoice)/画笔大小 String selected = SizeChoice.getSelectedItem(); if(selected=1) con = 1; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); else if(selected=3) con = 3; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); else if(sele
18、cted=5) con = 5; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); else if(selected=7) con = 7; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); else if(selected=9) con = 9; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); else i
19、f(e.getSource()=EraserChoice)/橡皮大小 String Esize = EraserChoice.getSelectedItem(); if(Esize=5) Econ = 5*2; else if(Esize=9) Econ = 9*2; else if(Esize=13) Econ = 13*2; else if(Esize=17) Econ = 17*3; public void mouseDragged(MouseEvent e) Point p1 ; switch(toolFlag) case 0:/画笔 x = (int)e.getX(); y = (i
20、nt)e.getY(); p1 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p1); repaint(); break; case 1:/橡皮 x = (int)e.getX(); y = (int)e.getY(); p1 = new Point(x, y, null, toolFlag, Econ); paintInfo.addElement(p1); repaint(); break; default : public void mouseMoved(MouseEvent e) public void update(
21、Graphics g) paint(g); public void mousePressed(MouseEvent e) Point p2; switch(toolFlag) case 3:/直线 x = (int)e.getX(); y = (int)e.getY(); p2 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p2); break; case 4: /圆 x = (int)e.getX(); y = (int)e.getY(); p2 = new Point(x, y, c, toolFlag, con); p
22、aintInfo.addElement(p2); break; case 5: /矩形 x = (int)e.getX(); y = (int)e.getY(); p2 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p2); break; default : public void mouseReleased(MouseEvent e) Point p3; switch(toolFlag) case 0:/画笔 paintInfo.addElement(cutflag); break; case 1: /eraser pai
23、ntInfo.addElement(cutflag); break; case 3:/直线 x = (int)e.getX(); y = (int)e.getY(); p3 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p3); paintInfo.addElement(cutflag); repaint(); break; case 4: /圆 x = (int)e.getX(); y = (int)e.getY(); p3 = new Point(x, y, c, toolFlag, con); paintInfo.ad
24、dElement(p3); paintInfo.addElement(cutflag); repaint(); break; case 5: /矩形 x = (int)e.getX(); y = (int)e.getY(); p3 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p3); paintInfo.addElement(cutflag); repaint(); break; default: public void mouseEntered(MouseEvent e) public void mouseExited(
25、MouseEvent e) public void mouseClicked(MouseEvent e) public void actionPerformed(ActionEvent e) if(e.getSource()=pen)/画笔 toolFlag = 0; if(e.getSource()=eraser)/橡皮 toolFlag = 1; if(e.getSource()=clear)/清除 toolFlag = 2; paintInfo.removeAllElements(); repaint(); if(e.getSource()=drLine)/画线 toolFlag = 3
26、; if(e.getSource()=drCircle)/画圆 toolFlag = 4; if(e.getSource()=drRect)/画矩形 toolFlag = 5; if(e.getSource()=colchooser)/调色板 Color newColor = JColorChooser.showDialog(this,调色板,c); c = newColor; if(e.getSource()=openPic)/打开图画 openPicture.setVisible(true); if(openPicture.getFile()!=null) int tempflag; te
27、mpflag = toolFlag; toolFlag = 2 ; repaint(); try paintInfo.removeAllElements(); File filein = new File(openPicture.getDirectory(),openPicture.getFile(); picIn = new FileInputStream(filein); VIn = new ObjectInputStream(picIn); paintInfo = (Vector)VIn.readObject(); VIn.close(); repaint(); toolFlag = t
28、empflag; catch(ClassNotFoundException IOe2) repaint(); toolFlag = tempflag; System.out.println(can not read object); catch(IOException IOe) repaint(); toolFlag = tempflag; System.out.println(can not read file); if(e.getSource()=savePic)/保存图画 savePicture.setVisible(true); try File fileout = new File(
29、savePicture.getDirectory(),savePicture.getFile(); picOut = new FileOutputStream(fileout); VOut = new ObjectOutputStream(picOut); VOut.writeObject(paintInfo); VOut.close(); catch(IOException IOe) System.out.println(can not write object); /end paintboard public class pb public static void main(String args) new paintboard(画图程序);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1