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

📄 2.java

📁 java简单画板
💻 JAVA
字号:
//powered by compower
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.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--橡皮);(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 picOut = 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 openPicture,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);
  //画笔大小选择
  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.addItemListener(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("显示调色板");

  //各组件事件监听
  clear.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 Label("画笔颜色",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.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,900,600); setVisible(true);
  validate();
  //dialog for save and load

  openPicture = 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.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.size();
  
  if(toolFlag==2)
    g.clearRect(0,0,getSize().width,getSize().height);//清除

  for(int i=0; i<n-1; 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(p1.tool==p2.tool)
   {
   switch(p1.tool)
   {
    case 0://画笔

      Line2D line1 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y);
      g2d.draw(line1);       

⌨️ 快捷键说明

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