利用repaint()方法,它会自动调用其父类update();update()方法中paint()方法为空操作。
clearRect 方法可是可以清空一个矩形区域,但是只能清空矩形区域。要是不规则形状或是有图形覆盖的情况就不太好了。
你已经重写了 paint(Graphics) 方法的话,就可以随时调用用 repaint() 方法重绘。这样灵活性和性能都是可以满足要求的。所有要绘制的内容都动态记录给 paint 方法。具体有多种办法,Hi 我,我给你 Demo。
尽量不要重写JFrame的paint方法,会有各种问题,JFrame中的所有内容实际上都包含在contentPane里,所以定制contentPane是更好的办法
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MouseDemo3 extends JFrame implements MouseListener, MouseMotionListener {
int flag;
int x = 0;
int y = 0;
int startx, starty, endx, endy;
public MouseDemo3() {
//将contentPane修改为自己的Panel,而不是使用JFrame自带的
JPanel contentPane = new PaintPanel();
contentPane.addMouseListener(this);
contentPane.addMouseMotionListener(this);
setContentPane(contentPane);
setSize(300, 300);
// show(); 已过时的API,用setVisible代替
setVisible(true);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void mousePressed(MouseEvent e) {
startx = e.getX();
starty = e.getY();
}
public void mouseReleased(MouseEvent e) {
endx = e.getX();
endy = e.getY();
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
public void mouseMoved(MouseEvent e) {
flag = 1;
x = e.getX();
y = e.getY();
repaint();
}
public void mouseDragged(MouseEvent e) {
flag = 2;
x = e.getX();
y = e.getY();
repaint();
}
public void update(Graphics g) {
g.setColor(this.getBackground());
g.fillRect(0, 0, getWidth(), getHeight());
paint(g);
}
//继承JPanel,并重写paintComponent而不是paint方法
//重写paint方法会导致该容器中的其他组件无法绘制
private class PaintPanel extends JPanel {
@Override
protected void paintComponent(Graphics g) {
g.setColor(Color.black);
if (flag == 1) {
g.drawString("鼠标坐标:(" + x + "," + y + ")", 10, 50);
g.drawLine(startx, starty, endx, endy);
}
if (flag == 2) {
g.drawString("拖拽鼠标坐标:(" + x + "," + y + ")", 10, 50);
g.drawLine(startx, starty, x, y);
}
}
}
public static void main(String[] args) {
new MouseDemo3();
}
}
先执行一下super.paintComponent(g);
或者,abstract void
clearRect(int x,
int y,
int width,
int height)
boolean draw = true;if(draw){ //绘制的代码}点击某个按钮,将draw = false;再repaint();
java中如何清除绘制的图像
: 利用repaint()方法,它会自动调用其父类update();update()方法中paint()方法为空操作.
java,怎样清除已画图形?_
: 用一个集合,把绘制过的全记录下来,在paint事件中重绘.......
java 画图前怎样清空已经绘制的图像_
: clearRect 方法可是可以清空一个矩形区域,但是只能清空矩形区域.要是不规则形状或是有图形覆盖的情况就不太好了.你已经重写了 paint(Graphics) 方法的话,就可以随时调用用 repaint() 方法重绘.这样灵活性和性能都是可以满足要求的.所有要绘制的内容都动态记录给 paint 方法.具体有多种办法,Hi 我,我给你 Demo.
java中如何清除界面上的图形
: 1.小程序中调用repaiint方法时,程序会首先清除paint()方法以前所画的内容. 2.利用clearrect(int x,int y,int width,int height)用背景色填充指定矩形达到清除该矩形的效果,相当一个“橡皮擦”采纳哦
java 中如何将画在画布上的图形清除(从canvas类继承的画布类)比如清除画在画布上的一个点?_
: 清除方法一、在图片的位置接着画一个矩形覆盖这个图片,并且把颜色设置成和背景色一样就OK了!代码如下:context.fillStyle="ffffff";//白色为例子;context.fillRect(400,100,400,100);注意,上面的代码要放在imageObj.onload里面才有效果;清除的方法二、用clearRect()方法,代码如下:context.clearRect(400,100,imageObj.width,100);//清除画布上的指定区域;注意,上面的代码要放在imageObj.onload里面才有效果;
java怎么清除图形界面
: 1.小程序中调用repaiint方法时,程序会首先清除paint()方法以前所画的内容. 2.利用clearRect(int x,int y,int width,int height)用背景色填充指定矩形达到清除该矩形的效果,相当一个“橡皮擦”采纳哦
如何消除java里的图片
: 可以通过repaint方法来进行重新绘图,也就是清除了当前所绘制的图案.解释:repaint方法,实际上它是实现的父类update方法,在update方法中paint方法为空操作.所以此时即可实现重新绘制图像的效果.
java JPanel如何清除上面的图案
: 如果想要清除绘制在JPanel上的图象的话,可以直接调用JPanel类的repaint()方法,即可完成清除工作;如果是想要清楚该容器中的子组件的话可以调用remove()或removeAll()方法,注意参数类型.
java中画板上画一条线,怎么能实现画线清除掉原来的线
: 绘制新的线条的时候直接覆盖掉原来的线条就可以
java 画方块时怎么把之前画的去掉
: 额,这个就是直接在画布上涂满背景色,比如背景为黑, 画完时候就直接将整个画区.setColor(Color.black); , 同理,如果已经画了一个白色方块,想直接清除白色方块,而不影响周围的话,就直接在白色方块的区域 画一个黑色方块(假设黑色为背景色)