有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

绘制未调用的Java绘制组件

public class AnaMetod {

    public static void main(String[] args) {
        Grafik2D g2 = new Grafik2D(10, 50,  "StackOverFlow");
    }
}


package kibAr2D;

import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Grafik2D extends JPanel {
    public static int a, b = 0;
    public static String c = "";

    public Grafik2D(int a, int b, String c) {
        this.a = a;
        this.b = b;
        this.c = c;
        JFrame j = new JFrame();
        j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        j.setTitle("kibAr");
        j.setBounds(150, 200, 613, 253);
        j.setVisible(true);
    }

    public void paintComponent(Graphics g){
        super.paintComponents(g);
        g.drawString(c, a, b);

    }
}

我不明白为什么paint方法不调用?也许当JFrame创建时,会自动调用paintComponent和paint方法。。那么我怎样才能解决这个问题呢

对不起,我英语不好


共 (1) 个答案

  1. # 1 楼答案

    您的代码有两个问题:

    1.)你的Grafik2D类的一个实例需要在可视化树中。您应该这样添加:

    public Grafik2D(int a, int b, String c) {
         // ...
         JFrame j = new JFrame();
         // ...
         j.add(this);
    }
    

    2.)您应该删除对paintComponents的调用或更正拼写:

    super.paintComponent(g);