Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何处理JFrame中的public void paint()方法_Java_Swing - Fatal编程技术网

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

Java 如何处理JFrame中的public void paint()方法,java,swing,Java,Swing,我的问题是当我使用 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.

我的问题是当我使用

 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中,我得到了一个黑屏,没有画hello java 请帮帮我
提前感谢

要正确显示继承的帧,继承类中的paint方法应包含对super.paint的调用:

class MyFrame extends JFrame {

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

}
在面板中编辑绘画:

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

这还不足以给出一个合格的答案。请给我们一个关于您的问题的最简单的工作示例。->也许可以先打电话给super.paintghelp@thomas请参见编辑请参见示例和。不要覆盖JFrame上的绘制!!!自定义绘制是通过覆盖JPanel上的paintComponent,然后将面板添加到框架中来完成的。阅读Swing教程中的部分,了解更多信息和工作示例。您是对的camickr。普里扬克,请看编辑后的帖子。