gpt4 book ai didi

java - 将 JPanel 传递给绘制矩形的方法

转载 作者:行者123 更新时间:2023-12-02 02:49:10 27 4
gpt4 key购买 nike

我有一个带有绘制方法的类,该方法接受 JPanel 作为参数。绘制方法中的第一行是:

Graphics g = p.getGraphics(); 

其中(p 是作为参数传递给 draw(Jpanel P) 方法的 jPanel)。

我想用不同的颜色绘制不同的矩形(基于条件语句)。所以我使用

g.setColor(Color.RED) // or another color

然后我使用

绘制矩形
g.fillrect(x,y,xsize,ysize). 

当我这样做

System.out.println("color is " + g.getColor().toString());

我看到颜色发生变化,但我没有看到 JPanel 上出现矩形。这个 JPanel 是我的类中的一个对象,它从 JFrame 扩展。我需要做什么才能看到 JPanel 上的矩形?

最佳答案

您不应该通过从 JPanel 获取 Graphics 对象来进行绘制。你应该做的是子类化 JPanel 并覆盖 PaintComponent,检查 this

原因是每次绘制面板时都会创建 Graphics 实例,并且您无法控制它,因为它的父级(JFrame)可能会决定何时执行此操作。因此,您永远不应该对 Graphics 实例做出任何假设,并且必须将绘制逻辑包含在 PaintComponent 方法中。

您看不到矩形的原因是因为您正在使用旧的 Graphics 实例绘制它们,或者因为在下一次重绘中它们被删除,因为不是它应该的顺序(这些调用必须是在paintComponent方法中)。

关于java - 将 JPanel 传递给绘制矩形的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44091130/

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