Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/04/2014, 07:50
Mechabits
 
Fecha de Ingreso: agosto-2013
Mensajes: 103
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: Dificultad goma de borrar paint

La clase PanelPaint:

Código Java:
Ver original
  1. package paintrodrigo;
  2.  
  3. import java.awt.BasicStroke;
  4. import java.awt.Color;
  5. import java.awt.Cursor;
  6. import java.awt.Dimension;
  7. import java.awt.Graphics;
  8. import java.awt.Graphics2D;
  9. import java.awt.Image;
  10. import java.awt.Point;
  11. import java.awt.Toolkit;
  12. import java.awt.event.MouseEvent;
  13. import java.awt.event.MouseListener;
  14. import java.awt.event.MouseMotionListener;
  15. import java.util.ArrayList;
  16. import javax.swing.BorderFactory;
  17. import javax.swing.JPanel;
  18.  
  19. public class PanelPaint extends JPanel implements MouseListener, MouseMotionListener {
  20.  
  21.     static public boolean linea = false;
  22.     static public boolean circulo = false;
  23.     static public boolean cuadrado = false;
  24.     static public boolean arco = false;
  25.     static public boolean borrador= false;
  26.    
  27.     static public Color colorFigura;
  28.    
  29.     static int px;
  30.     static int py;
  31.     static int ux;
  32.     static int uy;
  33.  
  34.     ArrayList posicionesBorrador = new ArrayList();
  35.     ArrayList tamañoBorrador = new ArrayList();
  36.     ArrayList colorBorrador = new ArrayList();
  37.    
  38.     ArrayList posicionesLinea = new ArrayList();
  39.     ArrayList colorLinea = new ArrayList();
  40.     ArrayList tamañoLinea = new ArrayList();
  41.    
  42.     ArrayList posicionesCirculo = new ArrayList();
  43.     ArrayList colorCirculo = new ArrayList();
  44.     ArrayList tamañoCirculo = new ArrayList();
  45.    
  46.     static Graphics2D g2;
  47.     Color blanco = Color.white;
  48.    
  49.     CrearYsituarSlider slider2;
  50.     CrearYsituarSlider slider;
  51.     Image im = Toolkit.getDefaultToolkit().createImage("src/imagenes/Cuadrado.png");
  52.     Cursor cur = Toolkit.getDefaultToolkit().createCustomCursor(im, new Point(10,10),"WILL");  
  53.  
  54.     public PanelPaint(CrearYsituarSlider slider2, CrearYsituarSlider slider) {
  55.         setBorder(BorderFactory.createLineBorder(colorFigura));
  56.         this.addMouseListener(this);
  57.         this.addMouseMotionListener(this);
  58.         this.slider=slider;
  59.         this.slider2=slider2;
  60.     }
  61.  
  62.     public Dimension getPreferredSize() {
  63.         return new Dimension(50, 400);
  64.     }
  65.  
  66.     public void paintComponent(Graphics g) {
  67.         super.paintComponent(g);
  68.         g2 = (Graphics2D) g;
  69.         this.setBackground(Color.GREEN);
  70.         System.out.println("px " + px);
  71.          //System.out.println("py " + py);
  72.          System.out.println("ux " + ux);
  73.          //System.out.println("uy " + uy);
  74.          
  75.          ////////////////////////////BORRADOR////////////////////////////        
  76.          if (borrador) {
  77.             rePintar();
  78.             g2.setStroke(new BasicStroke(slider2.valorSlider2()));
  79.             g2.setColor(blanco);
  80.             g2.drawLine(px, py, ux, uy);
  81.             setCursor(cur);
  82.         }
  83. ////////////////////////////LINEA////////////////////////////
  84.         if (linea) {
  85.             rePintar();
  86.             //g2.setStroke(new BasicStroke(slider2.valorSlider2()));
  87.             g2.setColor(colorFigura);
  88.             g2.drawLine(px, py, ux, uy);
  89.             setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
  90.         }
  91. ////////////////////////////CIRCULO////////////////////////////
  92.         if (circulo) {
  93.             rePintar();
  94.             //g2.setStroke(new BasicStroke(slider2.valorSlider2()));
  95.             g2.setColor(colorFigura);
  96.             g2.fillOval(px, py, ux, uy);
  97.             setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
  98.         }
  99. ////////////////////////////CUADRADO////////////////////////////
  100.         if (cuadrado) {
  101.             rePintar();
  102.             g2.setColor(colorFigura);
  103.             g2.drawLine(px, py, ux, py);
  104.             g2.drawLine(px, py, px, uy);
  105.             g2.drawLine(ux, uy, ux, py);
  106.             g2.drawLine(ux, uy, px, uy);
  107.            
  108.             /*setForeground(Color.red);
  109.             g2.fillRect(px,py,ux-px,uy-py);
  110.             g2.setColor(Color.black);
  111.             g2.drawRect(px,py,ux-px,uy-py);*/  
  112.         }        
  113.  
  114.     }
  115.  
  116.     public void rePintar() {
  117.        
  118.        
  119.        
  120.         for (int t = 0, a = 0; t < posicionesLinea.size(); t += 4, a++) {
  121.             g2.setStroke(new BasicStroke(slider2.valorSlider2()));
  122.             g2.setColor((Color) colorLinea.get(a));
  123.             g2.drawLine((int) posicionesLinea.get(t), (int) posicionesLinea.get(t + 1),
  124.                     (int) posicionesLinea.get(t + 2), (int) posicionesLinea.get(t + 3));
  125.         }
  126.        
  127.         for (int t = 0, a = 0; t < posicionesCirculo.size(); t += 4, a++) {
  128.             g2.setColor((Color) colorCirculo.get(a));
  129.             g2.fillOval((int) posicionesCirculo.get(t), (int) posicionesCirculo.get(t + 1),
  130.                     (int) posicionesCirculo.get(t + 2), (int) posicionesCirculo.get(t + 3));
  131.         }
  132.         for (int t = 0, a = 0; t < posicionesBorrador.size(); t += 4, a++) {
  133.             g2.setStroke(new BasicStroke(slider2.valorSlider2()));
  134.             g2.setColor(Color.WHITE);
  135.             g2.drawLine((int) posicionesBorrador.get(t), (int) posicionesBorrador.get(t + 1),
  136.                     (int) posicionesBorrador.get(t + 2), (int) posicionesBorrador.get(t + 3));
  137.         }
  138.        
  139.     }
  140.  
  141.     @Override
  142.     public void mouseDragged(MouseEvent e) {
  143.        
  144.         if (linea) {
  145.             ux = e.getPoint().x;
  146.             uy = e.getPoint().y;
  147.             //repaint(px, py, ux, uy);
  148.         }
  149.        
  150.         if (circulo) {
  151.             ux = e.getPoint().x - px;
  152.             uy = e.getPoint().y - py;
  153.             //repaint(px, py, ux, uy);
  154.         }
  155.        
  156.         if (cuadrado) {
  157.             ux = e.getPoint().x;
  158.             uy = e.getPoint().y;
  159.             //repaint(px, py, ux, uy);
  160.         }
  161.        
  162.         if (borrador) {
  163.             px = e.getPoint().x;
  164.             py = e.getPoint().y;
  165.             ux = px;
  166.             uy = py;    
  167.             posicionesBorrador.add(px);
  168.             posicionesBorrador.add(py);
  169.             posicionesBorrador.add(ux);
  170.             posicionesBorrador.add(uy);
  171.             //colorBorrador.add(colorFigura);        
  172.         }
  173.        
  174.         repaint();
  175.     }
  176.  
  177.     @Override
  178.     public void mouseMoved(MouseEvent e) {
  179.     }
  180.  
  181.     @Override
  182.     public void mouseClicked(MouseEvent e) {
  183.         System.out.println("linea " + linea);
  184.         System.out.println("circulo " + circulo);
  185.         System.out.println("cuadrado " + cuadrado);
  186.         System.out.println("arco " + arco);
  187.     }
  188.  
  189.     @Override
  190.     public void mousePressed(MouseEvent e) {
  191.        
  192.        if (linea) {
  193.             px = e.getPoint().x;
  194.             py = e.getPoint().y;
  195.        }
  196.        
  197.        if (circulo) {
  198.             px = e.getPoint().x;
  199.             py = e.getPoint().y;
  200.        }
  201.        
  202.        if (cuadrado) {
  203.             px = e.getPoint().x;
  204.             py = e.getPoint().y;
  205.        }    
  206.     }
  207.  
  208.     @Override
  209.     public void mouseReleased(MouseEvent e) {
  210.        
  211.         if (linea) {
  212.             posicionesLinea.add(px);
  213.             posicionesLinea.add(py);
  214.             posicionesLinea.add(ux);
  215.             posicionesLinea.add(uy);
  216.             colorLinea.add(colorFigura);
  217.         }
  218.        
  219.         if (circulo) {
  220.             posicionesCirculo.add(px);
  221.             posicionesCirculo.add(py);
  222.             posicionesCirculo.add(ux);
  223.             posicionesCirculo.add(uy);
  224.             colorCirculo.add(colorFigura);
  225.         }      
  226.     }
  227.  
  228.     @Override
  229.     public void mouseEntered(MouseEvent e) {
  230.     }
  231.  
  232.     @Override
  233.     public void mouseExited(MouseEvent e) {
  234.     }
  235. }

La clase CrearYsituarSlider:

Código Java:
Ver original
  1. package paintrodrigo;
  2.  
  3. import java.awt.GridLayout;
  4. import javax.swing.JLabel;
  5. import javax.swing.JPanel;
  6. import javax.swing.JSlider;
  7. import javax.swing.event.ChangeEvent;
  8. import javax.swing.event.ChangeListener;
  9.  
  10.  
  11. public class CrearYsituarSlider extends JPanel{
  12.     JSlider slider;
  13.     JLabel label;
  14.     JLabel label2;
  15.     MyChangeAction accion= new MyChangeAction();
  16.    
  17.     public CrearYsituarSlider(JLabel label2, JLabel label){
  18.         super(new GridLayout(2, 4));
  19.         this.label2=label2;        
  20.         this.label=label;
  21.         crearYsituarSlider();
  22.     }
  23.     private void crearYsituarSlider() {
  24.         slider = new JSlider();
  25.         slider.setValue(50);
  26.         slider.addChangeListener(accion);
  27.         this.add(label2);
  28.         this.add(label);
  29.         this.add(slider);  
  30.        System.out.println(valorSlider2());
  31.     }
  32.     public float valorSlider2(){
  33.         return accion.valorSlider();
  34.     }
  35.  
  36.    
  37.     public class MyChangeAction implements ChangeListener {
  38.         CrearYsituarSlider slider2;
  39.        
  40.         @Override
  41.         public void stateChanged(ChangeEvent ce) {
  42.             int value = slider.getValue();
  43.             String str = Integer.toString(value);
  44.             label.setText(str);
  45.             float numero=value*1.0f;
  46.                 System.out.println("El numero es "+numero);
  47.  
  48.             //System.out.println(slider.getValue()*1.0f);
  49.         }
  50.          public float valorSlider(){
  51.              float slider3;    
  52.              slider3=slider.getValue();          
  53.              return slider3;            
  54.         }
  55.     }
  56. }

estos son el resto de clases

Última edición por Mechabits; 21/04/2014 a las 02:05