我正在创建一个简单的程序,在其中绘制一个黑色椭圆形,然后用鼠标单击。但是,我希望出现一个新的椭圆形,而一个旧的椭圆形消失。我将如何去做呢?我弄乱了在mousePressed方法中插入的removeAll()方法,但是它对我不起作用。removeAll()方法是否甚至适用于此?还是我应该使用其他东西?抱歉,答案很明显,但是我对此还很陌生,正在尝试学习。任何建议将不胜感激。谢谢。
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class PaintPractice extends JPanel implements MouseListener {
Random rand = new Random();
int x = rand.nextInt(450);
int y = rand.nextInt(450);
public PaintPractice(){
super();
addMouseListener(this);
}
public static void main(String[] args){
JFrame frame = new JFrame();
PaintPractice panel = new PaintPractice();
frame.setSize(500, 500);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(panel);
}
public void paint(Graphics g){
g.setColor(Color.BLACK);
g.fillOval(x, y, 50, 50);
}
@Override
public void mousePressed(MouseEvent e) {
x = …Run Code Online (Sandbox Code Playgroud) 我试图在同一个窗口上绘制多个汽车对象,但看起来它们正在相互覆盖.
这是我在Car类中重写的paintComponent方法
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setColor(wheelColor);
g2.fill(leftWheel);
g2.fill(rightWheel);
g2.setColor(bodyColor);
g2.fill(body);
g2.fill(cab);
}
Run Code Online (Sandbox Code Playgroud)
在我的Viewer类中:
JFrame f = new JFrame();
initializeFrame(f);
Car x = new Car(100, 100);
Car y = new Car(300, 300);
f.add(x);
f.add(y);
Run Code Online (Sandbox Code Playgroud)
虽然坐标似乎不同,但只绘制了最后一辆车.
有什么建议?谢谢
我的问题是我需要制作一个不断更新的GUI我得到的数据可以从数据库中更改,我在图形区域遇到了一些问题.
好吧我使用Graphics2D的Drawline和Drawstring来打印数据库中的值,这个字符串和行移动并改变值,所以我需要调用repaint(); 用一个计时器让它们在jpanel中运行,问题是repaint(); 在绘画之前没有删除背景中的旧画,但是当我完全调整所有更新时.
我知道一种清除的方法,但背景颜色也消失了,有一种方法可以更新jpanel去除旧画并保持沉闷的背景颜色?
没有更新

将coordenate和标签文本更改为"AXIS Y"后(从计时器自动调用重绘)

谢谢.