如何根据我的paintComponent中的if条件在我的Java GUI中绘制文本?
Posted
技术标签:
【中文标题】如何根据我的paintComponent中的if条件在我的Java GUI中绘制文本?【英文标题】:How do I draw text in my Java GUI based on an if condition in my paintComponent? 【发布时间】:2022-01-14 19:17:34 【问题描述】:我有一个在我的paintComponent 中赢得游戏的if 条件,我想知道我应该如何绘制它以显示在我的Jpanel Java GUI 中?
@Override
public void paintComponent (Graphics g)
Graphics2D g2 = (Graphics2D) g;
Graphics2D buffer = world.createGraphics();
buffer.setColor(Color.black);
buffer.fillRect(0, 0, GameConstants.WORLD_WIDTH, GameConstants.WORLD_HEIGHT);
this.p1.drawImage(buffer);
this.p2.drawImage(buffer);
this.p3.drawImage(buffer);
this.p4.drawImage(buffer);
this.s1.drawImage(buffer);
this.a1.drawImage(buffer);
this.a2.drawImage(buffer);
this.a3.drawImage(buffer);
this.a4.drawImage(buffer);
//g2.drawImage(this.Background,0,0,null);
g2.drawImage(world,0,0,null);
if (this.p1.x == 6000 && this.p2.x == 6000 && this.p3.x == 6000 && this.p4.x == 6000)
g2.drawString("YOU WIN!!!");
【问题讨论】:
调试你的代码,打印或检查p1
-p4
的值,因为它们都必须是6000
@MadProgrammer 我以前有过。
考虑提供一个minimal reproducible example,因为我基本上可以让它工作,但是你的代码有些地方不工作
【参考方案1】:
要绘制字符串,您必须指定坐标。
g.setFont(); // set a font if you wish use -- new Font(...)
if (some condition)
g.drawString(str, x, y);
但您似乎做错了很多事情。首先,您应该将super.paintComponent(g);
作为paintComponent
方法中的第一条语句。而且你应该只使用paintComponent
提供的图形上下文进行绘画另外请注意
-
坐标必须在您正在绘制的容器的范围内,并且
您必须使用
g.setColor()
设置颜色,其中参数来自Color 类。否则,您可能会使用与容器背景相同的默认颜色进行绘制,因此不会被看到。
您可能还想考虑使用JOptionPane 来显示中奖信息或任何其他信息。
另请查看Java Tutorials 上的绘画示例和使用JOptionPane
。
【讨论】:
谢谢,但我仍然没有看到任何显示。 你在画什么。坐标必须在你画的范围内。您还必须使用g.setColor()
设置颜色,其中参数来自 Color 类。否则你可能用相同的颜色绘画,所以它不会被看到。很抱歉我忘了提。
现在可以使用了 :)
“我忘了说。” 看来成功了。您可以将edit 加入到答案中以提高知名度吗? OP:请点击左侧的“打勾”接受答案。
@AndrewThompson 完成! (我应该在没有刺激的情况下这样做。)我也把解释解释得更清楚了。谢谢!以上是关于如何根据我的paintComponent中的if条件在我的Java GUI中绘制文本?的主要内容,如果未能解决你的问题,请参考以下文章