gpt4 book ai didi

java - 在 Java 中重绘图形

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:56:55 26 4
gpt4 key购买 nike

我刚接触 Java 图形,但遇到了问题。我创建了一个带有 JPanel 面板的 JFrame 窗口 (NetBeans Designer),并在上面绘制了一些图形。然后我添加了一个更改变量的 JButton,这将更改 JPanel 上正方形的 X 位置。

按下按钮时,这段代码将执行:

drawObject.setX(150);
drawObject.repaint();

drawObject 是这个类的一个实例:

public class sola extends JPanel {

private int x = 10;

@Override
public void paintComponent(Graphics g){
super.paintComponents(g);
super.setBackground(Color.WHITE);

g.setColor(Color.ORANGE);
g.fill3DRect(x, 160, 100, 50, true);
}

public void setX(int xX){
x = xX;
}
}

现在,当我按下 JButton 时,矩形确实移动到新位置,但它在旧位置仍然可见。只有当我调整窗口大小时,它才会刷新并且旧矩形消失。我该如何解决这个问题,以便当我按下按钮时,矩形仅在新位置可见?

最佳答案

super.paintComponent(g);

不是

super.paintComponents(g);  // note the s at the edn

两者差别很大!第一个告诉您的 JPanel 执行通常由 paintComponent 方法执行的所有内务处理功能,包括重新绘制背景(您的项目的关键)。第二,您调用的那个不执行上述任何功能。所以我的建议是去掉 super 调用中的尾随 s。

关于java - 在 Java 中重绘图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5289194/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com