【问题标题】:my Jlabel is not showing up我的 Jlabel 没有出现
【发布时间】:2012-11-04 11:01:24
【问题描述】:

当我把它放在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);
    }
}

【问题讨论】:

  • 1) 为了尽快获得更好的帮助,请发帖 SSCCE。 2) 请对代码块使用一致且符合逻辑的缩进。
  • 1) 不应在paint 或paint 组件方法中创建标签。 2) 在这种情况下,调用label.setVisible(true) 不会有任何好处。

标签: java swing jlabel


【解决方案1】:

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

首先,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[]),但你可能只是在使用@987654330 @ 表示从 else where 调用类;)

【讨论】:

    【解决方案2】:

    从外观上看,您缺少很多 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

    【讨论】:

    • @AndrewThompson 我不是故意要防守的——对此感到抱歉。我对 SO 还很陌生,还在学习规则、标准和公认的做法。
    • (耸耸肩)没问题。而且你不是唯一一个在 SO 周围感觉像“新手”的人。我可能会达到 300K 代表。在那种感觉消失之前。 ;) 我只是说我的话是我的观点,..我的意见,而不是“SO规则”。
    猜你喜欢
    • 2019-01-24
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-19
    相关资源
    最近更新 更多