1

当我把它放在paint(Graphics2d g) 方法中时,Jlabel 没有出现,我不知道为什么。

我的文本类:

import java.awt.Color;
import java.awt.Graphics2D;

import javax.swing.JLabel;


public class Text {
    int ballX,ballY,squareX,squareY;
    Text text;
    private Game game;
    private Ball ball;
    private Racquet racquet;

    public  void main(){
        ballX = ball.getBallX();
        ballY = ball.getBallY();
        squareX = racquet.getSquareX();
        squareY = racquet.getSquareY();
    }

    public void paint(Graphics2D g) {

        g.setColor(Color.red);
        JLabel balltext = new JLabel("the ball is at " + ballX + ballY);
        balltext.setVisible(true);

        g.setColor(Color.green);
        JLabel squaretext = new JLabel("the ball is at " + squareX + squareY);
        squaretext.setVisible(true);
    }
}
4

2 回答 2

2

您的代码有些地方不太对劲。

首先,Text不从任何可绘制的东西延伸,所以paint永远不会被调用。无论如何,约定往往倾向于覆盖paintComponentSwing 组件。

此外,您应该始终调用super.paintXxx,这首先会突出显示问题。

其次,组件通常被添加到某种容器中,该容器负责为您绘制它们。

如果您想在您的程序中使用 Swing 组件,我建议您查看使用 JFC/Swing 创建 GUI

如果你想绘制文本,我建议你看看2D Graphics,特别是Working with Text APIs

有关您要实现的目标的更多信息也可能会有所帮助

另外,我不确定这是否是故意的,但public void main(){ins 不会充当程序的主要入口点,它应该是public static void main(String args[]),但您可能只是main用作从 else where 调用类的手段; )

于 2012-11-04T02:28:24.167 回答
1

从外观上看,您缺少很多 Java Swing gui 的范例/习语。

例如:

  • 如果您想覆盖paint / paintComponent 来指定组件的绘制方式,文本应该扩展JComponent。
  • 您应该创建一个单独的 Main 类作为程序的入口点(您不必这样做,但它可以帮助您暂时保持逻辑上的分离,这对您来说更容易概念化)
  • 您需要在 main 方法中创建一个 JFrame,然后创建 Text 类并将其添加到 JFrame 并在 JFrame 上调用 pack() 和 setVisible(True)。

我建议先看一些例子来了解方向:

http://zetcode.com/tutorials/javaswingtutorial/firstprograms/

http://www.javabeginner.com/java-swing/java-swing-tutorial

于 2012-11-04T01:59:38.300 回答