如何处理JFrame中的public void paint()方法



我的问题是当我使用时

 public void paint(Graphics g)
 {}

将字符串绘制为的方法

 g.drawString("hello java",0,0);

我的完整代码是

import javax.swing.*;
 import java.awt.*;
class test
extends JFrame
{
public void testing()
{
setSize(500,500);
show();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void paint(Graphics g)
{ super.paint(g);
g.drawString("HELLO JAVA");
}
public static void main(String arg[])
{
test t=new test();
t.testing();
} }

在JFrame中,我得到了一个没有绘制helloJava的黑屏请帮帮我提前感谢

为了正确显示继承的帧,继承类中的paint方法应该包含super.paint()的调用:

class MyFrame extends JFrame {
    public void paint(Graphics g) {
        super.paint(g);
        g.drawString("hello java", 50, 50);
    }
}

EDIT(面板中的绘画):

import java.awt.*;
import javax.swing.*;
public class CustomPaint {
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                JFrame frame = new JFrame("CustomPaint");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new MyPanel());
                frame.pack();
                frame.setLocationByPlatform(true);
                frame.setVisible(true);
            }
        });
    }
}
class MyPanel extends JPanel {
    public Dimension getPreferredSize() {
        return new Dimension(320, 240);
    }
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        String msg = "HELLO JAVA";
        g2.setPaint(Color.BLUE);
        int w = (getWidth() - g.getFontMetrics().stringWidth(msg)) / 2;
        g2.drawString(msg, w, getHeight() / 2);
    }
}

最新更新