我的Jlabel没有出现

时间:2012-11-04 01:56:11

标签: java swing jlabel

当我将它放入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);
    }
}

2 个答案:

答案 0 :(得分:2)

您的代码有一些不太恰当的地方。

首先,Text不会延伸到任何可绘制的内容,因此永远不会调用paint。无论如何,公约倾向于覆盖paintComponent的Swing组件。

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

其次,组件通常会添加到某种容器中,这些容器会为您绘制它们。

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

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

有关您正在尝试实现的目标的更多信息也可能有所帮助

另外,我不确定这是否有意,但public void main(){不能作为该计划的主要切入点,它应该是public static void main(String args[]),但你可能只是使用main作为从其他地方调用该类的方法;)

答案 1 :(得分: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