Java图形-未能正确绘制

Java图形-未能正确绘制,java,graphics,Java,Graphics,正在学习使用java中的图形,目前我正在尝试向屏幕添加一些图形,但失败了。我尝试过不同的方法,但都没有运气。例如,在显示的代码中,结构不能因为在单独的类中有paint方法而改变。这是我正在做的一个项目的简化版本 关于stackoverflow的其他问题有助于扩展和类似于oracle网站,但我仍然面临一些问题,因此我在这里提问 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class test {

正在学习使用java中的图形,目前我正在尝试向屏幕添加一些图形,但失败了。我尝试过不同的方法,但都没有运气。例如,在显示的代码中,结构不能因为在单独的类中有paint方法而改变。这是我正在做的一个项目的简化版本

关于stackoverflow的其他问题有助于扩展和类似于oracle网站,但我仍然面临一些问题,因此我在这里提问

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

public class test
{
    public static void main(String Args[])
    {
    panelme p1 = new panelme();
    }

}

class panelme
{
    JFrame mainPanel;

    panelme ()
    {
    mainPanel = new JFrame();
    mainPanel.setSize(1000,1000);
    mainPanel.setDefaultCloseOperation(mainPanel.EXIT_ON_CLOSE);
    //paintFrame();
    //paintFrame(g);
    //paintFrame(null);
    mainPanel.setVisible(true);
    }

    public void paintFrame(Graphics g)
    {
    g.drawString("This is a string!", 30, 40);
    //repaint();
    }
}
首先看一看和了解更多关于Swing中绘画工作的细节

接下来,看一看trail

接下来,创建一个从JPanel扩展而来的自定义类,然后重写它的paintComponent方法,并将自定义绘制放在其中

public class PaintPane extends JPanel {
    @Override
    public Dimension getPreferredSize() {
        return new Dimension(200, 200);
    }

    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawString("This is a string!", 30, 40);
    }
}
接下来,将自定义面板添加到窗口

EventQueue.invokeLater(new Runnable() {
    @Override
    public void run() {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
            ex.printStackTrace();
        }

        JFrame frame = new JFrame("Testing");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new PaintPane());
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
});

什么会阻止图形在屏幕上显示提示:paint api如何调用paintFrame。。。?