从JAVA中删除所有绘制的形状

从JAVA中删除所有绘制的形状,java,graphics2d,shapes,Java,Graphics2d,Shapes,我需要删除个别或全部形状! 请帮助我尝试从我的arrayList“Figuras”中删除所有内容 然后从面板上拆下所有 public class PaintRodo extends JFrame { JButton linea, circulo, rectangulo, trazo, llenar,borrar; static int seleccion = 1; Color trazoC = Color.BLACK; Color llenarC = Col

我需要删除个别或全部形状! 请帮助我尝试从我的
arrayList
“Figuras”中删除所有内容 然后从面板上拆下所有

public class PaintRodo extends JFrame {

    JButton linea, circulo, rectangulo, trazo, llenar,borrar;
    static  int seleccion = 1;
    Color trazoC  = Color.BLACK;
    Color llenarC = Color.lightGray;
    JMenuBar barra;


    public static void main(String[] args) {
        new PaintRodo();
    }

public PaintRodo() {
    this.setSize(1000,700);
    this.setTitle("Paint");
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel panel = new JPanel();
    panel.setBackground(Color.BLACK);
    Box miBox = Box.createHorizontalBox();
    linea= AgregarIcono("./src/linea.png",2);
    circulo= AgregarIcono("./src/circ.png",3);
    rectangulo= AgregarIcono("./src/rect.png",4);
    trazo = AgregarIconoColor("./src/trazo.png",5,true);
    llenar = AgregarIconoColor("./src/llenar.png",6,false);
    borrar =  AgregarIcono("./src/borrador.png",7);
    miBox.add(linea);
    miBox.add(circulo);
    miBox.add(rectangulo);
    miBox.add(llenar);
    miBox.add(trazo);
    miBox.add(borrar);
    panel.add(miBox);
    this.add(panel,BorderLayout.NORTH);
    this.add(new Lienzo(),BorderLayout.CENTER);
    this.setVisible(true);
}   

public JButton AgregarIcono (String icono, final int accion){
    JButton boton = new JButton();
    Icon iconos = new ImageIcon (icono);
    boton.setIcon(iconos);

    boton.addActionListener(new ActionListener(){

        public void actionPerformed(ActionEvent e){
        seleccion =accion;  

    }

    });
    return boton;

}

public JButton AgregarIconoColor (String icono, final int accion,final boolean grosor ){
    JButton boton = new JButton();
    Icon iconos = new ImageIcon (icono);
    boton.setIcon(iconos);

    boton.addActionListener(new ActionListener(){

        public void actionPerformed(ActionEvent e){
        if(grosor){
            trazoC = JColorChooser.showDialog(null,"Elige el Contorno",Color.BLACK);
        }
        else{
            llenarC = JColorChooser.showDialog(null,"Elige el Relleno",Color.BLACK);
        }

    }

    });
    return boton;

}

public class Lienzo extends JComponent{
    ArrayList<Shape> figuras = new ArrayList<Shape>();
    ArrayList<Color> arrLleno = new ArrayList<Color>();
    ArrayList<Color> arrTrazo = new ArrayList<Color>();
    Point inicio,fin;


    public Lienzo(){




        this.addMouseListener(new MouseAdapter()
        {
            public void mousePressed(MouseEvent e){
                if (seleccion!=1){
                inicio = new Point (e.getX(),e.getY());
                fin=inicio;
                repaint();
                }

            }
            public void mouseReleased(MouseEvent e){
                if (seleccion!=1){
                Shape SAVEfig=null;
                if (seleccion==2){
                     SAVEfig = crearLinea(inicio.x,inicio.y,e.getX(),e.getY());
                }
                else if (seleccion==3){
                     SAVEfig = crearCirculo(inicio.x,inicio.y,e.getX(),e.getY());

                }




                figuras.add(SAVEfig);
                arrLleno.add(llenarC);
                arrTrazo.add(trazoC);   
                repaint();
            }   

            }
        });//mouselistener

        this.addMouseMotionListener(new MouseMotionAdapter(){
            public void mouseDragged(MouseEvent e){

                fin= new Point (e.getX(),e.getY());
                repaint();

            }

        });//MotionListener


    }//constructor lienzo

    public void paint (Graphics g){

        Graphics2D graFig = (Graphics2D)g;
        graFig.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
        graFig.setStroke (new BasicStroke(2));
        Iterator<Color>contadorTrazo= arrTrazo.iterator();
        Iterator<Color>contadorLleno= arrLleno.iterator();
        graFig.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,1.0f));
        this.setBackground(Color.LIGHT_GRAY);
        for (Shape i: figuras){
            graFig.setPaint(contadorTrazo.next());
            graFig.draw(i);
            graFig.setPaint(contadorLleno.next());
            graFig.fill(i);
        }

        if (inicio!=null&&fin!=null){
            graFig.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.40f));
            graFig.setPaint(Color.LIGHT_GRAY);
            Shape SAVEfig=null;

            if (seleccion==2){
                SAVEfig=crearLinea(inicio.x,inicio.y,fin.x,fin.y);
            }
            else if (seleccion==3){
                SAVEfig=crearCirculo(inicio.x,inicio.y,fin.x,fin.y);
            }


            graFig.draw(SAVEfig);

        }



    }

    private Rectangle2D.Float crearRectangulo(int x1, int y1,int x2 , int y2){
        int x =Math.min(x1, x2);
        int y =  Math.min(y1, y2);

        int ancho = Math.abs(x1-x2);
        int alto = Math.abs(y1-y2);
        return new Rectangle2D.Float(x,y,ancho,alto);
    }
     private Line2D.Float crearLinea(int x1, int y1, int x2, int y2){
         return new Line2D.Float(x1, y1, x2, y2);
    }

      private Ellipse2D.Float crearCirculo( int x1, int y1, int x2, int y2){
          int x = Math.min(x1, x2);
          int y = Math.min(y1, y2);
          int ancho = Math.abs(x1 - x2);
          int alto = Math.abs(y1 - y2);
          return new Ellipse2D.Float(x, y, ancho, alto);
      }






}//classLienzo



 }//MainClass Paint rodo
公共类PaintRodo扩展JFrame{
JButton linea、circulo、rectangulo、trazo、llenar、borrar;
静态整数选择=1;
Color trazoC=Color.BLACK;
颜色Llenar=颜色为浅灰色;
杰门努巴·巴拉;
公共静态void main(字符串[]args){
新PaintRodo();
}
公共画师{
此.setSize(1000700);
本文件的标题为“油漆”;
此.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel面板=新的JPanel();
面板.立根背景(颜色.黑色);
Box miBox=Box.createHorizontalBox();
linea=AgregarIcono(“./src/linea.png”,2);
circulo=AgregarIcono(“./src/circ.png”,3);
rectangulo=AgregarIcono(“./src/rect.png”,4);
trazo=agregareconocolor(“./src/trazo.png”,5,真);
llenar=agregareconocolor(“./src/llenar.png”,6,假);
borrar=AgregarIcono(“./src/borrador.png”,7);
miBox.add(linea);
miBox.add(圈);
miBox.add(rectangulo);
miBox.add(llenar);
miBox.add(trazo);
miBox.add(borrar);
panel.add(miBox);
此.add(面板,BorderLayout.NORTH);
添加(新的Lienzo(),BorderLayout.CENTER);
此.setVisible(true);
}   
公共JButton AgregarIcono(字符串图标,最终整数帐户){
JButton-boton=新JButton();
Icon iconos=新图像图标(icono);
boton.setIcon(iconos);
addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
选择=accion;
}
});
返回波顿;
}
公共JButton Agregariconolor(字符串icono、最终整数accion、最终布尔grosor){
JButton-boton=新JButton();
Icon iconos=新图像图标(icono);
boton.setIcon(iconos);
addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
国际单项体育联合会(格罗索){
trazoC=JColorChooser.showDialog(null,“Elige el Contorno”,Color.BLACK);
}
否则{
llenarC=JColorChooser.showDialog(null,“Elige el Relleno”,Color.BLACK);
}
}
});
返回波顿;
}
公共类Lienzo扩展了JComponent{
ArrayList figuras=新的ArrayList();
ArrayList arrleno=新的ArrayList();
ArrayList arrTrazo=新的ArrayList();
芬兰伊尼西奥角;
公共图书馆{
this.addMouseListener(新的MouseAdapter()
{
公共无效鼠标按下(MouseEvent e){
如果(选择!=1){
inicio=新点(e.getX(),e.getY());
fin=inicio;
重新油漆();
}
}
公共无效MouseEvent(MouseEvent e){
如果(选择!=1){
Shape SAVEfig=null;
如果(选择==2){
SAVEfig=crearLinea(inicio.x,inicio.y,e.getX(),e.getY());
}
否则如果(选择==3){
SAVEfig=crearCirculo(inicio.x,inicio.y,e.getX(),e.getY());
}
图。添加(保存图);
arrleno.add(llenarC);
添加(trazoC);
重新油漆();
}   
}
});//鼠标听器
this.addMouseMotionListener(新的MouseMotionAdapter(){
公共无效鼠标标记(鼠标事件e){
fin=新点(e.getX(),e.getY());
重新油漆();
}
});//运动监听器
}//构造器连佐
公共空间涂料(图g){
Graphics2D graFig=(Graphics2D)g;
graFig.setRenderingHint(RenderingHits.KEY\u ANTIALIASING,RenderingHits.VALUE\u ANTIALIAS\u ON);
graFig.setStroke(新基本行程(2));
IteratorcontadorTrazo=arrTrazo.iterator();
iteratorContadorAlleno=arrleno.iterator();
setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,1.0f));
此背景(颜色:浅灰色);
用于(形状一:图){
graFig.setPaint(contadorTrazo.next());
附图(一);
graFig.setPaint(contadorLleno.next());
填充图(i);
}
如果(inicio!=null&&fin!=null){
setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.40f));
graFig.setPaint(颜色:浅灰色);
Shape SAVEfig=null;
如果(选择==2){
SAVEfig=crearLinea(inicio.x,inicio.y,fin.x,fin.y);
}
否则如果(选择==3){
SAVEfig=CREARCULO(inicio.x,inicio.y,fin.x,fin.y);
}
graFig.draw(SAVEfig);
}
}
私有矩形2D.浮点数crearRectangulo(int-x1,int-y1,int-x2,int-y2){
int x=数学最小值(x1,x2);
int y=数学最小值(y1,y2);
int ancho=数学绝对值(x1-x2);
int alto=数学绝对值(y1-y2);
返回新的矩形2D。浮动(x,y,ancho,alto);
}
专用线2D.浮动线A(整数x1、整数y1、整数x2、整数y2){
返回新行2d.Float(x1,y1,x2,y2);
}
专用椭圆E2D浮点数圆(整数x1、整数y1、整数x2、整数y2){
int x=数学最小值(x1,x2);
int y=数学最小值(y1,y2);
int ancho=数学绝对值(x1-x2);
int alto=数学绝对值(y1-y2);
返回新的椭圆E2D浮动(x,y,ancho,alto);
}
}//classLienzo
}//主级喷漆罗多
我需要删除个别或全部形状! 请帮忙;我已尝试从我的arrayList“Figuras”中删除所有内容
和(removeAll)从面板中

切勿在任何路径中使用
src
,一旦项目导出,该路径将不存在
Box
不是“布局”工具,它应该与
BoxLayout
一起使用
我已尝试从我的arrayList“Figuras”中删除所有内容
-在哪里?我没有看到任何代码能做到这一点。这对我来说很好
public class PaintRodo extends JFrame {

    JButton linea, circulo, rectangulo, trazo, llenar,borrar;
    static  int seleccion = 1;
    Color trazoC  = Color.BLACK;
    Color llenarC = Color.lightGray;
    JMenuBar barra;


    public static void main(String[] args) {
        new PaintRodo();
    }

public PaintRodo() {
    this.setSize(1000,700);
    this.setTitle("Paint");
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel panel = new JPanel();
    panel.setBackground(Color.BLACK);
    Box miBox = Box.createHorizontalBox();
    linea= AgregarIcono("./src/linea.png",2);
    circulo= AgregarIcono("./src/circ.png",3);
    rectangulo= AgregarIcono("./src/rect.png",4);
    trazo = AgregarIconoColor("./src/trazo.png",5,true);
    llenar = AgregarIconoColor("./src/llenar.png",6,false);
    borrar =  AgregarIcono("./src/borrador.png",7);
    miBox.add(linea);
    miBox.add(circulo);
    miBox.add(rectangulo);
    miBox.add(llenar);
    miBox.add(trazo);
    miBox.add(borrar);
    panel.add(miBox);
    this.add(panel,BorderLayout.NORTH);
    this.add(new Lienzo(),BorderLayout.CENTER);
    this.setVisible(true);
}   

public JButton AgregarIcono (String icono, final int accion){
    JButton boton = new JButton();
    Icon iconos = new ImageIcon (icono);
    boton.setIcon(iconos);

    boton.addActionListener(new ActionListener(){

        public void actionPerformed(ActionEvent e){
        seleccion =accion;  

    }

    });
    return boton;

}

public JButton AgregarIconoColor (String icono, final int accion,final boolean grosor ){
    JButton boton = new JButton();
    Icon iconos = new ImageIcon (icono);
    boton.setIcon(iconos);

    boton.addActionListener(new ActionListener(){

        public void actionPerformed(ActionEvent e){
        if(grosor){
            trazoC = JColorChooser.showDialog(null,"Elige el Contorno",Color.BLACK);
        }
        else{
            llenarC = JColorChooser.showDialog(null,"Elige el Relleno",Color.BLACK);
        }

    }

    });
    return boton;

}

public class Lienzo extends JComponent{
    ArrayList<Shape> figuras = new ArrayList<Shape>();
    ArrayList<Color> arrLleno = new ArrayList<Color>();
    ArrayList<Color> arrTrazo = new ArrayList<Color>();
    Point inicio,fin;


    public Lienzo(){




        this.addMouseListener(new MouseAdapter()
        {
            public void mousePressed(MouseEvent e){
                if (seleccion!=1){
                inicio = new Point (e.getX(),e.getY());
                fin=inicio;
                repaint();
                }

            }
            public void mouseReleased(MouseEvent e){
                if (seleccion!=1){
                Shape SAVEfig=null;
                if (seleccion==2){
                     SAVEfig = crearLinea(inicio.x,inicio.y,e.getX(),e.getY());
                }
                else if (seleccion==3){
                     SAVEfig = crearCirculo(inicio.x,inicio.y,e.getX(),e.getY());

                }




                figuras.add(SAVEfig);
                arrLleno.add(llenarC);
                arrTrazo.add(trazoC);   
                repaint();
            }   

            }
        });//mouselistener

        this.addMouseMotionListener(new MouseMotionAdapter(){
            public void mouseDragged(MouseEvent e){

                fin= new Point (e.getX(),e.getY());
                repaint();

            }

        });//MotionListener


    }//constructor lienzo

    public void paint (Graphics g){

        Graphics2D graFig = (Graphics2D)g;
        graFig.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
        graFig.setStroke (new BasicStroke(2));
        Iterator<Color>contadorTrazo= arrTrazo.iterator();
        Iterator<Color>contadorLleno= arrLleno.iterator();
        graFig.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,1.0f));
        this.setBackground(Color.LIGHT_GRAY);
        for (Shape i: figuras){
            graFig.setPaint(contadorTrazo.next());
            graFig.draw(i);
            graFig.setPaint(contadorLleno.next());
            graFig.fill(i);
        }

        if (inicio!=null&&fin!=null){
            graFig.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.40f));
            graFig.setPaint(Color.LIGHT_GRAY);
            Shape SAVEfig=null;

            if (seleccion==2){
                SAVEfig=crearLinea(inicio.x,inicio.y,fin.x,fin.y);
            }
            else if (seleccion==3){
                SAVEfig=crearCirculo(inicio.x,inicio.y,fin.x,fin.y);
            }


            graFig.draw(SAVEfig);

        }



    }

    private Rectangle2D.Float crearRectangulo(int x1, int y1,int x2 , int y2){
        int x =Math.min(x1, x2);
        int y =  Math.min(y1, y2);

        int ancho = Math.abs(x1-x2);
        int alto = Math.abs(y1-y2);
        return new Rectangle2D.Float(x,y,ancho,alto);
    }
     private Line2D.Float crearLinea(int x1, int y1, int x2, int y2){
         return new Line2D.Float(x1, y1, x2, y2);
    }

      private Ellipse2D.Float crearCirculo( int x1, int y1, int x2, int y2){
          int x = Math.min(x1, x2);
          int y = Math.min(y1, y2);
          int ancho = Math.abs(x1 - x2);
          int alto = Math.abs(y1 - y2);
          return new Ellipse2D.Float(x, y, ancho, alto);
      }






}//classLienzo



 }//MainClass Paint rodo