drawString不在窗口上绘制文本

时间:2016-10-22 16:47:41

标签: java string swing window

我试图制作一个带有一些文字的测试窗口,当我运行我的代码时,它不会绘制字符串。我为它指定了颜色。有人可以帮我吗?

Here what it draws

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

class Main
{
    public static void main(String[] args) {
        DrawFrame f = new DrawFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }
}
class DrawFrame extends JFrame
 {
    public DrawFrame(){
        setTitle("For Aylin");
        setSize(1280,720);

        DrawPanel panel = new DrawPanel();
        Container cp = getContentPane();
        cp.add(panel);
    }
}

class DrawPanel extends JPanel
{
    public void paintComponents(Graphics g)
    {
        super.paintComponents(g);
        g.setColor(Color.darkGray);
        g.drawString("Hi", 100, 10);
    }
}

1 个答案:

答案 0 :(得分:3)

你应该覆盖JPanel的paintComponent方法,而不是它的paintComponents方法,因为它们有两个非常不同的目的。第一个绘制组件本身(你想要的),而第二个绘制由这个父组件持有的子组件来绘制自己。

还要记住更改超级调用以使其匹配,并使用方法上方的@Override注释。