Java 爪哇油漆擦

Java 爪哇油漆擦,java,swing,Java,Swing,我想在程序中添加一个橡皮擦,但我不知道如何在鼠标标记的部分中键入橡皮擦的代码。。有人能帮忙吗??thx我对java程序还很陌生~ //dummypost有人能帮我理解到底是什么导致了问题。由于我猜不出发生了什么,我想我还没有正确理解桥接法的概念。如果有人也能解释一下桥接方法,那会很有帮助。//dummypost import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.even

我想在程序中添加一个橡皮擦,但我不知道如何在鼠标标记的部分中键入橡皮擦的代码。。有人能帮忙吗??thx我对java程序还很陌生~

//dummypost有人能帮我理解到底是什么导致了问题。由于我猜不出发生了什么,我想我还没有正确理解桥接法的概念。如果有人也能解释一下桥接方法,那会很有帮助。//dummypost

 import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;
 import javax.swing.event.*;
 import java.util.*;

 public class DrawingArea extends JPanel
{
private ArrayList<Drawing> drawing = new ArrayList<Drawing>();
private Point startPoint = null;
private Point endPoint = null;
private static int eraser = 0;rivate ArrayList<Drawing> drawing = new ArrayList<Drawing>();
private Point startPoint = null;
private Point endPoint = null;
private static int eraser = 0;

private Color fgColor = Color.BLACK;
private Color bgColor = Color.WHITE;

public DrawingArea()
{
    MyMouseListener ml = new MyMouseListener();
    addMouseListener(ml);
    addMouseMotionListener(ml);

}

public void paintComponent(Graphics g)
{
    super.paintComponent(g);
    setBackground(bgColor);

        //Custom code to paint all the graphics from the List
    for (DrawingArea.Drawing drw : drawing) 
    {
        g.setColor(drw.getFGColor());
        Point startPoint = drw.getStartPoint();
        Point endPoint = drw.getEndPoint();
        g.drawLine(startPoint.x, startPoint.y, endPoint.x, endPoint.y);
    }
        //Paint the graphics as the mouse is being dragged
    g.setColor(fgColor);

    if (startPoint != null && endPoint != null && eraser == 0) 
    {
        g.drawLine(startPoint.x, startPoint.y, endPoint.x, endPoint.y);
    }

    if(startPoint != null && endPoint != null && eraser == 1)
    {
        g.clearRect(startPoint.x, startPoint.y,40,40);
    }

}

public void eraser()
{
    eraser = 1;
}


public void clear()
{
    drawing.clear();
    repaint();
}

public void setFGColor(Color fgColor)
{
    this.fgColor = fgColor;
}

public void setBGColor(Color bgColor)
{
    this.bgColor = bgColor;
}

class MyMouseListener extends MouseInputAdapter
{
    public void mousePressed(MouseEvent e)
    {
        startPoint = e.getPoint();
        endPoint = startPoint;
    }

    public void mouseDragged(MouseEvent e)
    {
    // Repaint only the area affected by the mouse dragging
        endPoint = e.getPoint();

        if (startPoint != null && endPoint != null && eraser ==0) 
        {
            Drawing drw = new Drawing(fgColor, startPoint, endPoint);
            drawing.add(drw);   
        }

        if (startPoint != null && endPoint != null && eraser ==1) 
        {

        }
        startPoint = endPoint;
        repaint();      
    }

    public void mouseReleased(MouseEvent e)
    {
        eraser = 0;
    }
}

class Drawing
{
    private Color fgColor;
    private Point startPoint;
    private Point endPoint;

    public Drawing(Color fgColor, Point startPoint, Point endPoint)
    {
        this.fgColor = fgColor;
        this.startPoint = startPoint;
        this.endPoint = endPoint;
    }

    public Color getFGColor()
    {
        return fgColor;
    }

    public void setFGColor(Color fgColor)
    {
        this.fgColor = fgColor;
    }

    public Point getStartPoint()
    {
        return startPoint;
    }

    public Point getEndPoint()
    {
        return endPoint;
    }
}
import java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
导入javax.swing.event.*;
导入java.util.*;
公共类绘图区域扩展JPanel
{
私有ArrayList绘图=新建ArrayList();
专用点startPoint=null;
私有点端点=null;
私有静态整型橡皮擦=0;rivate ArrayList drawing=new ArrayList();
专用点startPoint=null;
私有点端点=null;
专用静态整型橡皮擦=0;
专用颜色fgColor=Color.BLACK;
私有颜色bgColor=Color.WHITE;
公共提款区()
{
MyMouseListener ml=新的MyMouseListener();
addMouseListener(ml);
addMouseMotionListener(ml);
}
公共组件(图形g)
{
超级组件(g);
挫折背景(bgColor);
//用于绘制列表中所有图形的自定义代码
用于(图纸区域。图纸drw:图纸)
{
g、 setColor(drw.getFGColor());
Point startPoint=drw.getStartPoint();
Point endPoint=drw.getEndPoint();
g、 绘制线(起点.x,起点.y,终点.x,终点.y);
}
//拖动鼠标时绘制图形
g、 setColor(fgColor);
如果(起始点!=null&&endPoint!=null&&橡皮擦==0)
{
g、 绘制线(起点.x,起点.y,终点.x,终点.y);
}
如果(起始点!=null&&endPoint!=null&&橡皮擦==1)
{
g、 clearRect(startPoint.x,startPoint.y,40,40);
}
}
公共无效橡皮擦()
{
橡皮擦=1;
}
公共空间清除()
{
绘图。清除();
重新油漆();
}
公共空间设置fgColor(颜色fgColor)
{
this.fgColor=fgColor;
}
公共空间设置颜色(颜色bgColor)
{
this.bgColor=bgColor;
}
类MyMouseListener扩展了MouseInputAdapter
{
公共无效鼠标按下(MouseEvent e)
{
startPoint=e.getPoint();
端点=起始点;
}
公共无效鼠标标记(鼠标事件e)
{
//仅重新绘制受鼠标拖动影响的区域
端点=e.getPoint();
如果(起始点!=null&&endPoint!=null&&橡皮擦==0)
{
图纸drw=新图纸(fgColor、起点、终点);
添加图纸(drw);
}
如果(起始点!=null&&endPoint!=null&&橡皮擦==1)
{
}
起点=终点;
重新油漆();
}
公共无效MouseEvent(MouseEvent e)
{
橡皮擦=0;
}
}
类图
{
私人色彩;
专用点起始点;
专用点端点;
公共图形(颜色、点起点、点终点)
{
this.fgColor=fgColor;
this.startPoint=startPoint;
this.endPoint=端点;
}
公共颜色getFGColor()
{
返回颜色;
}
公共空间设置fgColor(颜色fgColor)
{
this.fgColor=fgColor;
}
公共点getStartPoint()
{
返回起始点;
}
公共点getEndPoint()
{
返回端点;
}
}

}

你想让橡皮擦做什么?假设我拖动时橡皮擦可以擦除我画的线,但我不能。通常,拖动线时你不会擦除线,只需调用repaint()。对paintComponent()的下一次调用将清除所有内容,包括线的旧位置,然后在新位置绘制线。