如何根据 paintComponent 中的 if 条件在 Java GUI 中绘制文本?
How do I draw text in my Java GUI based on an if condition in my paintComponent?
我在我的 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!!!");
}
}
要绘制字符串,您必须指定坐标。
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()
设置颜色,其中参数来自颜色 class。否则,您可能会使用与容器背景相同的默认颜色进行绘制,因此不会被看到。
您可能还想考虑使用 JOptionPane 来显示获胜消息或任何其他消息。
另请查看 Java Tutorials 绘画示例和使用 JOptionPane
。
我在我的 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!!!");
}
}
要绘制字符串,您必须指定坐标。
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()
设置颜色,其中参数来自颜色 class。否则,您可能会使用与容器背景相同的默认颜色进行绘制,因此不会被看到。
您可能还想考虑使用 JOptionPane 来显示获胜消息或任何其他消息。
另请查看 Java Tutorials 绘画示例和使用 JOptionPane
。