Java 爪哇油漆擦
我想在程序中添加一个橡皮擦,但我不知道如何在鼠标标记的部分中键入橡皮擦的代码。。有人能帮忙吗??thx我对java程序还很陌生~ //dummypost有人能帮我理解到底是什么导致了问题。由于我猜不出发生了什么,我想我还没有正确理解桥接法的概念。如果有人也能解释一下桥接方法,那会很有帮助。//dummypostJava 爪哇油漆擦,java,swing,Java,Swing,我想在程序中添加一个橡皮擦,但我不知道如何在鼠标标记的部分中键入橡皮擦的代码。。有人能帮忙吗??thx我对java程序还很陌生~ //dummypost有人能帮我理解到底是什么导致了问题。由于我猜不出发生了什么,我想我还没有正确理解桥接法的概念。如果有人也能解释一下桥接方法,那会很有帮助。//dummypost import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.even
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()的下一次调用将清除所有内容,包括线的旧位置,然后在新位置绘制线。