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

📄 drawview.java

📁 简单的画图程序
💻 JAVA
字号:
package boya;
import java.awt.*;
import java.util.*;
import java.awt.geom.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
class DrawView extends JComponent implements Observer,ID{
 private Draw theApp;
 public DrawView(Draw theApp){
  this.theApp=theApp;
  MouseHandler handler=new MouseHandler();
  addMouseListener(handler);
  addMouseMotionListener(handler);
 }
 class MouseHandler extends MouseInputAdapter{
  private Point start,end;
  private Elements temp;
  private Graphics2D g2D;
  private Elements createElement(Point start,Point end){
   switch(theApp.getWindow().getElementType()){
    case LINE:
     return new Elements.Line(start,end,theApp.getWindow().getElementColor());
    case RECTANGLE:
     return new Elements.Rectangle(start,end,theApp.getWindow().getElementColor());
    case CIRCLE:
     return new Elements.Circle(start,end,theApp.getWindow().getElementColor());
    case CURVE:
     return new Elements.Curve(start,end,theApp.getWindow().getElementColor());
   }
   return null;
  }
  public void mousePressed(MouseEvent e){
   start=e.getPoint();
   int modifier=e.getModifiers();
   if((modifier&e.BUTTON1_MASK)!=0){
    g2D=(Graphics2D)getGraphics();
    g2D.setXORMode(getBackground());
    g2D.setPaint(theApp.getWindow().getElementColor());
   }
  }
  public void mouseDragged(MouseEvent e){
   end=e.getPoint();
   int modifier=e.getModifiers();
   if((modifier&e.BUTTON1_MASK)!=0&&(theApp.getWindow()
    .getElementType()!=TEXT)){
    if(temp==null)
     temp=createElement(start,end);
    else{
     temp.draw(g2D);
     temp.moving(start,end);
    }
    temp.draw(g2D);
   }
  }
  public void mouseReleased(MouseEvent e){
   int modifier=e.getModifiers();
   if(e.isPopupTrigger()){
    start=e.getPoint();
    theApp.getWindow().getPopup().show((Component)e.getSource(),
         start.x,start.y);
    start=null;
   }
   else if((modifier&e.BUTTON1_DOWN_MASK)==0&&(theApp.getWindow()
    .getElementType()!=TEXT)){
    if(temp!=null){
     theApp.getModel().add(temp);
     temp=null;
    }
    if(g2D!=null){
     g2D.dispose();
     g2D=null;
    }
    start=end=null;
   }
  }
  public void mouseClicked(MouseEvent e){
   int modifier=e.getModifiers();
   if((modifier&e.BUTTON1_MASK)!=0&&(theApp.getWindow()
    .getElementType()==TEXT)){
    start=e.getPoint();
    String text=JOptionPane.showInputDialog(
       (Component)e.getSource(),"输入文字"
       ,"文字",JOptionPane.PLAIN_MESSAGE);
    if(text!=null){
     g2D=(Graphics2D)getGraphics();
     Font font=theApp.getWindow().getFont();
     temp=new Elements.Text(font,text,start,
       theApp.getWindow().getElementColor(),
       font.getStringBounds(text,g2D.getFontRenderContext()).getBounds());
     temp.draw(g2D);
     if(temp!=null)
      theApp.getModel().add(temp);
     temp=null;
     g2D.dispose();
     g2D=null;
     start=null;
    }
   }
  }
   
 }
 public void update(Observable o,Object rectangle){
  if(rectangle==null) 
   repaint();
  else repaint((Rectangle)rectangle);
 }
 public void paint(Graphics g){
  Graphics2D g2D=(Graphics2D)g;
  Iterator elements=theApp.getModel().getIterator();
  Elements element;
  while(elements.hasNext()){
   element=(Elements)elements.next();
   element.draw(g2D);
  }
 }
}

⌨️ 快捷键说明

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