Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
JHtmlImageMapper - ImagePanel.java

ImagePanel.java

Caricato da: GN
Scarica il programma completo

  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.io.*;
  4. import javax.imageio.*;
  5. import javax.swing.*;
  6. import java.util.List;
  7. import java.util.ArrayList;
  8. import areas.*;
  9.  
  10. public abstract class ImagePanel extends JPanel implements MouseListener{
  11.  
  12.         public List<Area> areas;
  13.         public Image img;
  14.         public int editIndex;
  15.         public int polyVertexEditIndex;
  16.         public String editAction = "";
  17.  
  18.         public abstract void onUpdate(boolean isPolygon);
  19.  
  20.         public ImagePanel(){
  21.                 this.addMouseListener(this);
  22.         }
  23.  
  24.         public boolean loadImage(File f){
  25.                 try{
  26.                         Image newImg = ImageIO.read(f);
  27.                         if(newImg == null){return false;}
  28.                         img = newImg;
  29.                         setPreferredSize(new Dimension(img.getWidth(null), img.getHeight(null)));
  30.                         repaint();
  31.                         return true;
  32.                 }catch(IOException e){
  33.                         return false;
  34.                 }
  35.         }
  36.  
  37.         public void paintComponent(Graphics g) {
  38.                 super.paintComponent(g);
  39.                 if(img != null){
  40.                         g.drawImage(img, 0, 0, null);
  41.                 }
  42.                 for(int i = 0; i < areas.size(); i++){
  43.                         if(i == editIndex){
  44.                                 g.setColor(new Color(255, 0, 0, 100));
  45.                         }else{
  46.                                 g.setColor(new Color(0, 0, 255, 100));
  47.                         }
  48.                         areas.get(i).draw(g);
  49.                 }
  50.         }
  51.  
  52.         public void mouseClicked(MouseEvent e){}
  53.         public void mouseEntered(MouseEvent e){}
  54.         public void mouseExited(MouseEvent e){}
  55.         public void mousePressed(MouseEvent e){
  56.                 boolean isPolygon = false;
  57.                 switch(editAction){
  58.                         case "rectA":
  59.                                 ((RectangleArea)areas.get(editIndex)).a = e.getPoint();
  60.                         break;
  61.                         case "rectB":
  62.                                 ((RectangleArea)areas.get(editIndex)).b = e.getPoint();
  63.                         break;
  64.                         case "circleCenter":
  65.                                 ((CircleArea)areas.get(editIndex)).center = e.getPoint();
  66.                         break;
  67.                         case "circleRadius":
  68.                                 Point center = ((CircleArea)areas.get(editIndex)).center;
  69.                                 int dx = e.getPoint().x - center.x;
  70.                                 int dy = e.getPoint().y - center.y;
  71.                                 ((CircleArea)areas.get(editIndex)).r = (int)Math.round(Math.sqrt(dx*dx + dy*dy));
  72.                         break;
  73.                         case "polyVertex":
  74.                                 ((PolygonArea)areas.get(editIndex)).vertices.set(polyVertexEditIndex, e.getPoint());
  75.                                 isPolygon = true;
  76.                         break;
  77.                 }
  78.                 repaint();
  79.                 onUpdate(isPolygon);
  80.         }
  81.         public void mouseReleased(MouseEvent e){}
  82. }