使用super.paint()不会显示任何内容

时间:2014-01-28 14:41:37

标签: java swing jframe paint paintcomponent

我知道这可能很简单,但这给我带来了麻烦。当我使用paint()时,它什么也没显示,如果我使用paintComponent(),它会显示错误(找不到符号)。我做错了什么?

这是使用paint()的一个例子:

import javax.swing.*; 
import java.awt.Graphics; 
import java.awt.*; 

public class Test extends JFrame {

    public Test() {
        this.setPreferredSize(new Dimension(400, 400));
        this.pack();
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);

        // define the position
        int locX = 200;
        int locY = 200;

        // draw a line (there is now drawPoint..)
        g.drawLine(locX, locY, locX, locY); 
    }

    public static void main(String[] args) {
        Test test = new Test(); 
    }
}

评论说这是一个很好而且简单的代码,但我看不到任何东西,因为它什么都没有显示。

[解决] 对所有回答的人,谢谢。大声笑我,我真的没有注意到有一个小点。太棒了,谢谢。

2 个答案:

答案 0 :(得分:3)

您的代码不是推荐的做事方式,但除此之外,它可以运作。

您没有设置要绘制的颜色,并绘制一个点。你可能只是没看到它(我不得不看两次)。它在200,200处绘制一个黑色像素。

答案 1 :(得分:2)

我敢打赌问题是你只画了一个点,所以很难看出来。你的代码对我来说很好。

但是,您应该扩展JPanel,而不是JFrame。推荐阅读:http://docs.oracle.com/javase/tutorial/uiswing/painting/