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

📄 jpaint.java

📁 本程序主要是实现了画圆以及几何图形的图形编辑器,希望能给爱好用JAVA编辑图形的朋友有所帮助.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
  int   w   =   Integer.parseInt(t.nextToken());   
  int   h   =   Integer.parseInt(t.nextToken());   
  currentBackColor   =   new   Color(Integer.parseInt(t.nextToken()));   
    
  polygon.clear();   
  Shape   temp;   
  for(int   i   =   0;   i   <   size;   i++)   {   
  temp   =   new   Shape();   
  temp.readData(in);   
  polygon.add(temp);   
  }   
    
  setSize(w,   h);   
  in.close();   
  }   catch(IOException   exception)   {   
  exception.printStackTrace();   
  }   
  }   
    
  private   class   LabelPanel   extends   JPanel  //设置显示坐标 
  {   
    JLabel   label;   
    
    public   LabelPanel()   
    {   
    label   =   new   JLabel("Current   X:   "   +   currentX   
    +   "           Current   Y:   "   +   currentY);   
    add(label);   
    }   
    
  public   void   paintComponent(Graphics   g)   
  {   
    super.paintComponent(g);   
    label.setText("Current   X:   "   +   currentX   
    +   "           Current   Y:   "   +   currentY);   
  }   
  }   
    
  private   class   MouseHandler   extends   MouseAdapter   
  {   
    private   int   tempX;   
    private   int   tempY;   
    private   Shape   temp;   
   
    public   void   mousePressed(MouseEvent   event)   
   {   
    tempX   =   event.getX();   
    tempY   =   event.getY();   
    currentX   =   tempX;   
    currentY   =   tempY;   
    
    int   isLeft   =   event.getModifiersEx()   &   InputEvent.BUTTON1_DOWN_MASK;   
    int   isRight   =   event.getModifiersEx()   &   InputEvent.BUTTON3_DOWN_MASK;   
    
    if(isLeft   !=   0   &&   paintEnabled)   
    {   
     switch(currentShape)   
     {   
      case   Shape.LINE:   
      temp   =   new   Line();   
      break;   
      case   Shape.SQUARE:   
      temp   =   new   Square();   
      break;   
      case   Shape.ELLIPSE:   
      temp   =   new   Ellipse();   
      break;  
      case   Shape.ERASER:   
      temp   =   new  Eraser();   
      break;  
      default:   
      temp   =   new   Line(); 
    }   
    
  temp.setStart(tempX,   tempY);   
  temp.setEnd(tempX,   tempY);   
  temp.color   =   currentColor;   
  temp.isFill   =   currentFill;   
  polygon.add(temp);   
  setCursor(Cursor.getPredefinedCursor(   
  Cursor.CROSSHAIR_CURSOR));   
  }   
  else   if(isLeft   !=   0   &&   !paintEnabled)   
  {    
   int   size   =   polygon.size();   
    
   setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));   
   for(int   i   =   0;   i   <   size;   i++)   
   {   
    temp   =   (Shape)polygon.get(i);   
    if(temp.isContain(tempX,   tempY))   
    temp.isSelected   =   true;   
   }   
   moveX   =   tempX;   
   moveY   =   tempY;   
  }  
   else   if(isRight   !=   0)   
   {   
    for(int   i   =   0;   i   <   polygon.size();   i++)   
    {   
     temp   =   (Shape)polygon.get(i);   
     if(temp.isContain(tempX,   tempY))  
     {   
      polygon.remove(i);   
      i--;   
     }   
    }   
    repaint();   
  }   
 }   
    
  public   void   mouseReleased(MouseEvent   event)   {   
  tempX   =   event.getX();   
  tempY   =   event.getY();   
  currentX   =   tempX;   
  currentY   =   tempY;   
    
  int   isLeft   =   event.getModifiersEx()   &   InputEvent.BUTTON1_DOWN_MASK;   
    
  if(isLeft   !=   0   &&   paintEnabled)   {   
  temp   =   (Shape)polygon.get(polygon.size()   -   1);   
  temp.setEnd(tempX,   tempY);   
  }   
    
  if(!paintEnabled)   {   
  int   size   =   polygon.size();   
    
  setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));   
  for(int   i   =   0;   i   <   size;   i++)   {   
  temp   =   (Shape)polygon.get(i);   
  temp.isSelected   =   false;   
  }   
  }   
  else   
  setCursor(Cursor.getDefaultCursor());   
  }   
  } // MouseHandler() end 
    
     private   class   MouseMotionHandler  implements   MouseMotionListener 
    {   
      private   int   tempX;   
      private   int   tempY;   
      private   Shape   temp; 
      int x,y;

  //鼠标移动事件  
  public   void   mouseMoved(MouseEvent   event)   {   
  currentX   =   event.getX();   
  currentY   =   event.getY();   
  

	  
  repaint();   
  }   
  //鼠标拖拽事件  
  public   void   mouseDragged(MouseEvent   event)   
  {   
   tempX   =   event.getX();   
   tempY   =   event.getY();   
   currentX   =   tempX;   
   currentY   =   tempY;   
  
    
  int   isLeft   =   event.getModifiersEx()   &   InputEvent.BUTTON1_DOWN_MASK;   
              int   isRight   =   event.getModifiersEx()   &   InputEvent.BUTTON3_DOWN_MASK;   
    
  if(isLeft   !=   0   &&   paintEnabled)   {   
  int   size   =   polygon.size();   
    
  temp   =   (Shape)polygon.get(size   -   1);   
  temp.setEnd(tempX,   tempY);   
  }   else   if(isLeft   !=   0   &&   !paintEnabled)   {   
  int   size   =   polygon.size();   
  int   x1,   y1,   x2,   y2;   
    
  for(int   i   =   0;   i   <   size;   i++)   {   
  temp   =   (Shape)polygon.get(i);   
  if(temp.isSelected)   {   
  x1   =   (int)temp.getStart().getX()   +   (tempX   -   moveX);   
  y1   =   (int)temp.getStart().getY()   +   (tempY   -   moveY);   
  x2   =   (int)temp.getEnd().getX()   +   (tempX   -   moveX);   
  y2   =   (int)temp.getEnd().getY()   +   (tempY   -   moveY);   
                          temp.setStart(x1,   y1);   
                          temp.setEnd(x2,   y2);   
  }   
  moveX   =   tempX;   
  moveY   =   tempY;   
  
  }   
  }   
  repaint();   
  }  // mouseDragged() end
  } // MouseHandler() end 
  }   
class   PaintFrame   extends   JFrame   {   
  PaintPanel   paintPanel;   
  JMenuItem   backItem;   
  JMenuItem   foreItem;   
  JRadioButtonMenuItem   draw;   
  JRadioButtonMenuItem   fill;   
  private   static   int   ID   =   -1;   
    
  public   PaintFrame()   {   
  ID++;   
  if(ID   ==   0)   
  setTitle("JPaint   v1.0");   
  else   
  setTitle("JPaint   v1.0("   +   ID   +   ")");   
    
  setBounds(150,   150,   500,   400); //设置面板大小 
 
  ImageIcon img1=new ImageIcon(JPaint.class.getResource("17.png"));//设置图标
  setIconImage(img1.getImage());
    
  paintPanel   =   new   PaintPanel();   
  getContentPane().add(paintPanel);   
    
  JMenuBar   menuBar   =   makeMenuBar(); //建立菜单栏  
  setJMenuBar(menuBar);   
    
  backItem.addActionListener(new   
  ActionListener()   {   
  public   void   actionPerformed(ActionEvent   e)   {   
  Color   defaultColor   =   Color.WHITE;   
  Color   selected   =   JColorChooser.showDialog(   
  PaintFrame.this,   "Background   Color",   defaultColor);   
  paintPanel.setBackColor(selected);   
  }   
  });   
  //菜单项目监听
  foreItem.addActionListener(new   
  ActionListener()   {   
  public   void   actionPerformed(ActionEvent   e)   {   
  Color   defaultColor   =   Color.BLACK;   
  Color   selected   =   JColorChooser.showDialog(   
  PaintFrame.this,   "Change   ForeColor",   defaultColor);   
  paintPanel.setForeColor(selected);   
  }   
  });   
  draw.addActionListener(new   
  ActionListener()   {   
  public   void   actionPerformed(ActionEvent   e)   {   
  paintPanel.setDraw();   
  }   
  });   
  fill.addActionListener(new   
  ActionListener()   {   
  public   void   actionPerformed(ActionEvent   e)   {   
  paintPanel.setFill();   
  }   
  });   
  }   
    
  private   JMenuBar   makeMenuBar()   {   
  JMenuBar   menuBar   =   new   JMenuBar();   
    
  JMenu   fileMenu   =   new   JMenu("文件");   
  fileMenu.setMnemonic('F'); //设置快捷键  
  menuBar.add(fileMenu);   
    
  JMenuItem   newItem   =   new   JMenuItem("新建",   'N');//设置菜单选项对应的快捷键      
  newItem.setAccelerator(   
  KeyStroke.getKeyStroke(KeyEvent.VK_N,   InputEvent.CTRL_MASK));   
  newItem.addActionListener(new   
  ActionListener()   {   
  public   void   actionPerformed(ActionEvent   e)   {   
  PaintFrame   frame   =   new   PaintFrame();   
  frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//设置面板关闭方式   
  frame.show();   
  }   
  });  //新建文件 
  fileMenu.add(newItem);   
    
  JMenuItem   openItem   =   new   JMenuItem("打开",   'O'); //设置菜单选项对应的快捷键    
  openItem.setAccelerator(   
  KeyStroke.getKeyStroke(KeyEvent.VK_O,   InputEvent.CTRL_MASK));   
  openItem.addActionListener(new   
  ActionListener()   {   
  public   void   actionPerformed(ActionEvent   e)   {   
  JFileChooser   chooser   =   new   JFileChooser();   
  chooser.setCurrentDirectory(new   File("."));   
  chooser.addChoosableFileFilter(new   MyFilter());   
  int   result   =   chooser.showOpenDialog(PaintFrame.this);   
    
  if(result   ==   JFileChooser.APPROVE_OPTION)   {   
  String   file   =   chooser.getSelectedFile().getName();   
  paintPanel.readShapes(file);   
  }   
  }   
  }); //打开文件  
  fileMenu.add(openItem);   
    
  JMenuItem   saveItem   =   new   JMenuItem("保存",   'O'); //设置菜单选项对应的快捷键    
  saveItem.setAccelerator(KeyStroke.getKeyStroke(   
  KeyEvent.VK_S,   InputEvent.CTRL_MASK));   
  saveItem.addActionListener(new   
  ActionListener()   {   
  public   void   actionPerformed(ActionEvent   e)   {   
  JFileChooser   chooser   =   new   JFileChooser();   
  chooser.setCurrentDirectory(new   File("."));   
  chooser.addChoosableFileFilter(new   MyFilter());   
  int   result   =   chooser.showSaveDialog(PaintFrame.this);   
    
  if(result   ==   JFileChooser.APPROVE_OPTION)   {   
  String   file   =   chooser.getSelectedFile().getName();   
  paintPanel.writeShapes(file);   
  }   
  }   
  });  //保存文件 
  fileMenu.add(saveItem);   
    
  fileMenu.addSeparator();   
    
  JMenuItem   exitItem   =   new   JMenuItem("退出",   'x');   
  exitItem.setAccelerator(KeyStroke.getKeyStroke(   
  KeyEvent.VK_X,   InputEvent.CTRL_MASK));   
  exitItem.addActionListener(   
  new   ActionListener()   {   
  public   void   actionPerformed(ActionEvent   event)   {   
  System.exit(0);   
  }   
  });  //退出 
  fileMenu.add(exitItem);   
    
  JMenu   setMenu   =   new   JMenu("设置");   
  setMenu.setMnemonic('S');   
  menuBar.add(setMenu);   
    
  backItem   =   new   JMenuItem("背景色",   'B');   
  setMenu.add(backItem);   
    
  foreItem   =   new   JMenuItem("前景色",   'C');   
  setMenu.add(foreItem);   
    
  ButtonGroup   group   =   new   ButtonGroup();   
  draw   =   new   JRadioButtonMenuItem("画",   true);   
  fill   =   new   JRadioButtonMenuItem("填充",   false);   
  group.add(draw);   
  group.add(fill);   
    
  JMenu   style   =   new   JMenu("格式");   
  style.add(draw);   
  style.add(fill);   
  setMenu.add(style);   
    
  JMenu   helpMenu   =   new   JMenu("帮助");   
  helpMenu.setMnemonic('H');   
  menuBar.add(helpMenu);   
    
  JMenuItem   helpItem   =   new   JMenuItem("帮助",   'H');   
  helpItem.setAccelerator(KeyStroke.getKeyStroke(   
  KeyEvent.VK_H,   InputEvent.CTRL_MASK));   
  helpItem.addActionListener(   
  new   ActionListener()   {   
  public   void   actionPerformed(ActionEvent   event)   {   
  HelpFrame   help   =   new   HelpFrame();   
  help.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);   
  help.show();   
  }   
  });   
  helpMenu.add(helpItem);   
    
  JMenuItem   aboutItem   =   new   JMenuItem("关于",   'A');   
  aboutItem.setAccelerator(KeyStroke.getKeyStroke(   
  KeyEvent.VK_A,   InputEvent.CTRL_MASK));   
  aboutItem.addActionListener(   
  new   ActionListener()   {   
  public   void   actionPerformed(ActionEvent   event)   {   
  JOptionPane.showMessageDialog(   
  PaintFrame.this,   "   JPaint   Version   0.1\n\n"   +   
  "作者  :    李慧琼 20031190028\n             王乃蓁 20031190030 ");   
  }   
  });   
  helpMenu.add(aboutItem);   
    
  return   menuBar;   
  }   
    
  private   class   MyFilter   extends   FileFilter   {   
  public   boolean   accept(File   f)   {   
  return   f.getName().toLowerCase().endsWith(".jpt")   
  ||   f.isDirectory();   
  }   
    
  public   String   getDescription()   {   
  return   "JPaint   file   type";   
  }   
  }   
    
  private   class   HelpFrame   extends   JFrame   {   
  public   HelpFrame()   {   
  setTitle("JPaint   Help");   
  setSize(450,   520);   
  setResizable(false);   
    
  JTextArea   text   =   new   JTextArea(20,   42);   
  Font   f   =   new   Font("楷体",   Font.PLAIN,   20);  //设置字体和大小 
  text.setFont(f);   
  text.setForeground(Color.BLUE);   
  text.setLineWrap(true);   
  text.setWrapStyleWord(true);   
  text.setEditable(false);   
    
  text.append("                  JPaint   v0.1  帮助文档\n\n");   
  text.append("    JPaint   是一个用JAVA语言编写的简单画图程序,"  +  " 文件后缀名为  *.jpt,\n");   
  text.append("    选择不同按钮或通过菜单选项均可以改变颜色,图形式样."+"画图方法为鼠标操作,拖拽鼠标左键实现'画',点击鼠标右键可以清除所画图形.\n");   
    
  getContentPane().add(text);   
  }   
  }   
  }   
    
  public   class   JPaint   {   
  public   static   void   main(String[]   args)   {   
  PaintFrame   frame   =   new   PaintFrame();   
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
  frame.show();   //令可见
  }   
  }   

⌨️ 快捷键说明

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