Java Can';t在JFrame中使用drawString()打印任何字符串

Java Can';t在JFrame中使用drawString()打印任何字符串,java,swing,jframe,paintcomponent,drawstring,Java,Swing,Jframe,Paintcomponent,Drawstring,我正在试图找出这段短代码的错误。我无法使用drawString()方法在我的JFrame中打印字符串文本。请帮忙。如果运行该程序,将只显示纯白色屏幕 代码: JFrame没有paintComponent方法。所以你不会覆盖任何东西,也不会画画 请注意,JPanel确实有一个paintComponent方法,您应该在JComponent或JPanel上进行绘制,它们确实有该方法。您不希望在顶级容器(如JFrame)上绘制。(如果您确实需要知道,正确的重写方法是paintforJFrame) 也就是

我正在试图找出这段短代码的错误。我无法使用
drawString()
方法在我的
JFrame
中打印字符串文本。请帮忙。如果运行该程序,将只显示纯白色屏幕

代码:

JFrame
没有
paintComponent
方法。所以你不会覆盖任何东西,也不会画画

请注意,
JPanel
确实有一个
paintComponent
方法,您应该在
JComponent
JPanel
上进行绘制,它们确实有该方法。您不希望在顶级容器(如
JFrame
)上绘制。(如果您确实需要知道,正确的重写方法是
paint
for
JFrame

也就是说,您还应该在
paintComponent
方法中调用
super.paintComponent
,这样就不会打断绘制链并留下绘制瑕疵


旁注

  • 作为良好的实践,使用
    @Override
    注释,这样您就知道您正确地重写了一个方法。您会看到,
    paintComponent
    不会覆盖
    JFrame
    s方法之一

  • setVisible(true)
    添加组件后

  • panel.setBounds(0,0500)JFrame
    具有默认的
    BorderLayout

  • 遵循Java命名约定,使用大写字母作为类名

  • 从事件分派线程运行Swing应用程序。更多信息请访问


决赛


第二段中的
paingComponent
拼写错误。希望我能+2得到好的答案,然后给出额外的建议。
     import javax.swing.*;
     import java.awt.*;

public class sample extends JFrame
{

    private JPanel panel;

    public sample()
    {
        setSize(500,500);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);

        panel =new JPanel();

        Container mainP= getContentPane();
        mainP.add(panel);
        panel.setBounds(0,0,500,500);
        panel.setBackground(Color.WHITE);
    }

    public void paintComponent(Graphics g)
    {
        Graphics2D eg = (Graphics2D)g;
        eg.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        eg.setColor(Color.BLACK);
        eg.drawString("TEXT", 40, 120);
    }

    public static void main(String args[])
    {
        new sample();
    }

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

public class Sample extends JFrame {

    private JPanel panel;

    public Sample() {
        setSize(500, 500);
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        panel = new JPanel() {
            @Override
            public void paintComponent(Graphics g) {
                super.paintComponent(g);
                Graphics2D eg = (Graphics2D) g;
                eg.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
                eg.setColor(Color.BLACK);
                eg.drawString("TEXT", 40, 120);
            }
        };

        Container mainP = getContentPane();
        mainP.add(panel);
        panel.setBackground(Color.WHITE);
        setVisible(true);
    }

    public static void main(String args[]) {
        SwingUtilities.invokeLater(new Runnable(){
            public void run() {
                new Sample();
            }
        });  
    }
}