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

📄 minidrawpad.java

📁 我多年的收集都早里面拉
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
   if(currentChoice==3||currentChoice==13)
   {
    itemList[index-1].x1=itemList[index].x2=itemList[index].x1=e.getX();
    itemList[index-1].y1=itemList[index].y2=itemList[index].y1=e.getY();
    index++;
    createNewItem();
   }
   else
    {
     itemList[index].x2=e.getX();
     itemList[index].y2=e.getY();
    }
   repaint();
   }

  public void mouseMoved(MouseEvent e)
   {statusBar.setText("     Mouse Moved @:[" + e.getX() +
                              ", " + e.getY() + "]");}
  }



private class checkBoxHandler implements ItemListener
 {
  public void itemStateChanged(ItemEvent e)
  {
   if(e.getSource()==bold)
     if(e.getStateChange()==ItemEvent.SELECTED)
        f1=Font.BOLD;
      else
        f1=Font.PLAIN;
   if(e.getSource()==italic)
     if(e.getStateChange()==ItemEvent.SELECTED)
        f2=Font.ITALIC;
      else
        f2=Font.PLAIN;
          }
 }



 class DrawPanel extends JPanel
 {
   public DrawPanel()
  {
   setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
   setBackground(Color.white);
   addMouseListener(new mouseA());
   addMouseMotionListener(new mouseB());
  }

    public void paintComponent(Graphics g)
    {
      super.paintComponent(g);

      Graphics2D g2d=(Graphics2D)g;	

      int j=0;
      while (j<=index)
      {
        draw(g2d,itemList[j]);
        j++;
      }
    }

    void draw(Graphics2D g2d,drawings i)
    {
      i.draw(g2d);
    }
 }



 void createNewItem()
  { if(currentChoice==14)
          drawingArea.setCursor(Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR));
          else
          drawingArea.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));

    switch (currentChoice)
    {
      case 3:
        itemList[index]=new Pencil();
        break;
      case 4:
        itemList[index]=new Line();
        break;
      case 5:
        itemList[index]=new Rect();
        break;
      case 6:
        itemList[index]=new fillRect();
        break;
      case 7:
        itemList[index]=new Oval();
        break;
      case 8:
        itemList[index]=new fillOval();
        break;
      case 9:
        itemList[index]=new Circle();
        break;
      case 10:
        itemList[index]=new fillCircle();
        break;
      case 11:
        itemList[index]=new RoundRect();
        break;
      case 12:
        itemList[index]=new fillRoundRect();
        break;
      case 13:
        itemList[index]=new Rubber();
        break;
      case 14:
        itemList[index]=new Word();
        break;
    }
    itemList[index].type=currentChoice;
    itemList[index].R=R;
    itemList[index].G=G;
    itemList[index].B=B;
    itemList[index].stroke=stroke;
  }



public void chooseColor()
 {
    color=JColorChooser.showDialog(MiniDrawPad.this,
                          "Choose a color",color);
    R=color.getRed();
    G=color.getGreen();
    B=color.getBlue();
    itemList[index].R=R;
    itemList[index].G=G;
    itemList[index].B=B;
  }


public void setStroke()
 {
  String input;
  input=JOptionPane.showInputDialog(
          "Please input a float stroke value! ( >0 )");
  stroke=Float.parseFloat(input);
  itemList[index].stroke=stroke;
  }


 public void saveFile()
 {
    JFileChooser fileChooser=new JFileChooser();
    fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
    int result =fileChooser.showSaveDialog(this);
    if(result==JFileChooser.CANCEL_OPTION)
             return ;
    File fileName=fileChooser.getSelectedFile();
    fileName.canWrite();

    if (fileName==null||fileName.getName().equals(""))
    JOptionPane.showMessageDialog(fileChooser,"Invalid File Name",
            "Invalid File Name", JOptionPane.ERROR_MESSAGE);
    else{
      try {
       fileName.delete();
       FileOutputStream fos=new FileOutputStream(fileName);

       output=new ObjectOutputStream(fos);
       drawings record;

       output.writeInt( index );

       for(int i=0;i< index ;i++)
       {
               drawings p= itemList[ i ] ;
        output.writeObject(p);
        output.flush();    
               }
      output.close();
      fos.close();
      }
       catch(IOException ioe)
       {
         ioe.printStackTrace();
       }
      }
   }

 public void loadFile()
 {

    JFileChooser fileChooser=new JFileChooser();
    fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
    int result =fileChooser.showOpenDialog(this);
    if(result==JFileChooser.CANCEL_OPTION)
          return ;
    File fileName=fileChooser.getSelectedFile();
    fileName.canRead();
    if (fileName==null||fileName.getName().equals(""))
       JOptionPane.showMessageDialog(fileChooser,"Invalid File Name",
            "Invalid File Name", JOptionPane.ERROR_MESSAGE);
    else {
      try {

          FileInputStream fis=new FileInputStream(fileName);

          input=new ObjectInputStream(fis);
          drawings inputRecord;

          int countNumber=0;
          countNumber=input.readInt();

          for(index=0;index< countNumber ;index++)
          {
            inputRecord=(drawings)input.readObject();
            itemList[ index ] = inputRecord ;

          }

          createNewItem();
          input.close();

          repaint();
          }
           catch(EOFException endofFileException){
            JOptionPane.showMessageDialog(this,"no more record in file",
                           "class not found",JOptionPane.ERROR_MESSAGE );
          }
          catch(ClassNotFoundException classNotFoundException){
            JOptionPane.showMessageDialog(this,"Unable to Create Object",
                           "end of file",JOptionPane.ERROR_MESSAGE );
          }
          catch (IOException ioException){
            JOptionPane.showMessageDialog(this,"error during read from file",
                           "read Error",JOptionPane.ERROR_MESSAGE );
            }
          }
       }



 public void newFile()
 {
  index=0;
  currentChoice=3;
  color=Color.black;
  stroke=1.0f;
  createNewItem();
  repaint();
 }

 public static void main(String args[])
  {try {
        UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName());
        }
     catch ( Exception e ) {}

   MiniDrawPad newPad=new MiniDrawPad();
   newPad.addWindowListener(
        new WindowAdapter(){
           public void windowClosing(WindowEvent e)
           {System.exit(0);}});
  }
}
class drawings implements Serializable
 {
  int x1,y1,x2,y2;	
  int R,G,B;		
  float stroke;	
  int type;		
  String s1;
  String s2;		

  void draw(Graphics2D g2d){};
 }

 class Line extends drawings 
 {
 void draw(Graphics2D g2d)
  {g2d.setPaint(new Color(R,G,B));
   g2d.setStroke(new BasicStroke(stroke,
                BasicStroke.CAP_ROUND,BasicStroke.JOIN_BEVEL));
   g2d.drawLine(x1,y1,x2,y2);
   }
 }


 class Rect extends drawings
 {
 void draw(Graphics2D g2d)
  {g2d.setPaint(new Color(R,G,B));
   g2d.setStroke(new BasicStroke(stroke));
   g2d.drawRect(Math.min(x1,x2),Math.min(y1,y2),
              Math.abs(x1-x2),Math.abs(y1-y2));
  }
 }


 class fillRect extends drawings
 {
 void draw(Graphics2D g2d)
  {g2d.setPaint(new Color(R,G,B));
   g2d.setStroke(new BasicStroke(stroke));
   g2d.fillRect(Math.min(x1,x2),Math.min(y1,y2),
              Math.abs(x1-x2),Math.abs(y1-y2));
  }
 }


 class Oval extends drawings
  {
    void draw(Graphics2D g2d)
    {g2d.setPaint(new Color(R,G,B));
     g2d.setStroke(new BasicStroke(stroke));
     g2d.drawOval(Math.min(x1,x2),Math.min(y1,y2),
                  Math.abs(x1-x2),Math.abs(y1-y2));
    }
  }


 class fillOval extends drawings
 {
  void draw(Graphics2D g2d)
  {g2d.setPaint(new Color(R,G,B));
   g2d.setStroke(new BasicStroke(stroke));
   g2d.fillOval(Math.min(x1,x2),Math.min(y1,y2),
                Math.abs(x1-x2),Math.abs(y1-y2));
         }
 }


 class Circle extends drawings
 {
   void draw(Graphics2D g2d)
   {g2d.setPaint(new Color(R,G,B));
    g2d.setStroke(new BasicStroke(stroke));
    g2d.drawOval(Math.min(x1,x2),Math.min(y1,y2),
               Math.max(Math.abs(x1-x2),Math.abs(y1-y2)),
               Math.max(Math.abs(x1-x2),Math.abs(y1-y2))
               );
    }
 }


 class fillCircle extends drawings
 {
  void draw(Graphics2D g2d)
  {g2d.setPaint(new Color(R,G,B));
   g2d.setStroke(new BasicStroke(stroke));
   g2d.fillOval(Math.min(x1,x2),Math.min(y1,y2),
               Math.max(Math.abs(x1-x2),Math.abs(y1-y2)),
               Math.max(Math.abs(x1-x2),Math.abs(y1-y2))
               );
         }
 }


 class RoundRect extends drawings
 {
  void draw(Graphics2D g2d)
  {g2d.setPaint(new Color(R,G,B));
   g2d.setStroke(new BasicStroke(stroke));
   g2d.drawRoundRect(Math.min(x1,x2),Math.min(y1,y2),
                   Math.abs(x1-x2),Math.abs(y1-y2),
                   50,35);
         }
 }


 class fillRoundRect extends drawings
 {
  void draw(Graphics2D g2d)
  {g2d.setPaint(new Color(R,G,B));
   g2d.setStroke(new BasicStroke(stroke));
   g2d.fillRoundRect(Math.min(x1,x2),Math.min(y1,y2),
                   Math.abs(x1-x2),Math.abs(y1-y2),
                   50,35);
         }
 }


 class Pencil extends drawings
 {
  void draw(Graphics2D g2d)
  {g2d.setPaint(new Color(R,G,B));
   g2d.setStroke(new BasicStroke(stroke,
                BasicStroke.CAP_ROUND,BasicStroke.JOIN_BEVEL));
   g2d.drawLine(x1,y1,x2,y2);
         }
 }


 class Rubber extends drawings
 {
  void draw(Graphics2D g2d)
  {g2d.setPaint(new Color(255,255,255));
   g2d.setStroke(new BasicStroke(stroke+4,
                BasicStroke.CAP_ROUND,BasicStroke.JOIN_BEVEL));
   g2d.drawLine(x1,y1,x2,y2);
         }
 }


 class Word extends drawings
 {
  void draw(Graphics2D g2d)
  {
          g2d.setPaint(new Color(R,G,B));
          g2d.setFont(new Font(s2,x2+y2,((int)stroke)*18));
          if (s1!= null )
          g2d.drawString(s1,x1,y1);
         }
 }


⌨️ 快捷键说明

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