700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > drawrect java_java - g.drawRect在背景后面绘制矩形 - 堆栈内存溢出

drawrect java_java - g.drawRect在背景后面绘制矩形 - 堆栈内存溢出

时间:2018-09-09 03:19:52

相关推荐

drawrect java_java - g.drawRect在背景后面绘制矩形 - 堆栈内存溢出

我想提出一种清除屏幕的方法。 我试着做repaint(); 我看到它在另一个代码中起作用。 现在,我正在尝试执行g.drawRect但是它将其绘制在背景后面( 程序看起来像什么 )。

我做了一个明确的方法,尝试更改无效的背景颜色,然后尝试制作一个红色的矩形来覆盖窗口,但两者均无效。

public void clear(Graphics g) {

Graphics2D g2d = (Graphics2D) g;

g2d.setBackground(Color.RED);

g2d.setColor(Color.RED);

g2d.drawRect(0, 0, 640, 480);

}

@Override

public void paintComponent(Graphics gfx) {

super.paintComponent(gfx);

Graphics2D g = (Graphics2D) gfx;

g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

g.setColor(Color.BLACK);

g.drawString(welcome, 10, 20);

g.setColor(Color.RED);

g.setStroke(new BasicStroke(2));

for (GeneralPath old_path : old_paths ) {

g.draw(old_path);

}

g.setColor(Color.GREEN);

g.setStroke(new BasicStroke(2));

g.draw(p);

clear(g);

}

完整代码如下:

import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Point;

import java.awt.RenderingHints;

import java.awt.Toolkit;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.event.MouseMotionListener;

import java.awt.geom.GeneralPath;

import java.awt.image.BufferedImage;

import java.util.LinkedList;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class Drawing extends JPanel implements MouseListener, MouseMotionListener {

private static final long serialVersionUID = 1L;

GeneralPath p=new GeneralPath();

String welcome = "Welcome";

LinkedList old_paths= new LinkedList();

public Drawing() {

try

{

setCursor(Toolkit.getDefaultToolkit().createCustomCursor(ImageLoader.loadImage("218.png"),new Point(10,10),"custom cursor"));

}catch(Exception e){}

addMouseListener(this);

addMouseMotionListener(this);

}

public void clear(Graphics g) {

Graphics2D g2d = (Graphics2D) g;

g2d.setBackground(Color.RED);

g2d.setColor(Color.RED);

g2d.drawRect(0, 0, 640, 480);

}

@Override

public void paintComponent(Graphics gfx) {

super.paintComponent(gfx);

Graphics2D g = (Graphics2D) gfx;

g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

g.setColor(Color.BLACK);

g.drawString(welcome, 10, 20);

g.setColor(Color.RED);

g.setStroke(new BasicStroke(2));

for (GeneralPath old_path : old_paths ) {

g.draw(old_path);

}

g.setColor(Color.GREEN);

g.setStroke(new BasicStroke(2));

g.draw(p);

clear(g);

}

@Override

public void mouseClicked(MouseEvent event)

{

if (event.getClickCount() == 2) {

System.out.println("clicked");

Graphics g = getGraphics();

clear(g);

g.setColor(Color.RED);

g.drawRect(0, 0, 640, 480);

}

}

@Override

public void mouseEntered(MouseEvent me) {

}

@Override

public void mouseExited(MouseEvent me) {

}

@Override

public void mousePressed(MouseEvent me) {

old_paths.add(p);

p=new GeneralPath();

p.moveTo(me.getX(), me.getY());

repaint();

}

@Override

public void mouseReleased(MouseEvent me) {

}

@Override

public void mouseDragged(MouseEvent me) {

p.lineTo(me.getX(), me.getY());

repaint();

}

@Override

public void mouseMoved(MouseEvent me) {

}

public static void main(String[] args) {

JFrame frame = new JFrame("Test");

frame.setSize(640, 480);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.add(new Drawing());

frame.setVisible(true);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。