Java drawString未在窗口上绘制文本

Java drawString未在窗口上绘制文本,java,string,swing,window,Java,String,Swing,Window,我试图创建一个带有文本的测试窗口,当我运行代码时,它不会绘制字符串。我指定了它的颜色。有人能帮我吗 您应该重写JPanel的paintComponent方法,而不是它的paintComponents方法,因为它们有两个截然不同的用途。第一种方法绘制组件本身(您想要的),而第二种方法获取此父级持有的子组件来绘制它们自己 还请记住更改超级调用以使其匹配,并使用方法上方的@Override注释。您应该重写JPanel的paintComponent方法,而不是其paintComponents方法,因为

我试图创建一个带有文本的测试窗口,当我运行代码时,它不会绘制字符串。我指定了它的颜色。有人能帮我吗


您应该重写JPanel的
paintComponent
方法,而不是它的
paintComponents
方法,因为它们有两个截然不同的用途。第一种方法绘制组件本身(您想要的),而第二种方法获取此父级持有的子组件来绘制它们自己


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

您应该重写JPanel的
paintComponent
方法,而不是其
paintComponents
方法,因为它们有两个截然不同的用途。第一种方法绘制组件本身(您想要的),而第二种方法获取此父级持有的子组件来绘制它们自己

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

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);
    }
}