0
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方法调用..那么我该如何替换这个问题?

对不起我的英语不好..

4

2 回答 2

1

您的代码有两个问题:

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

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

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

super.paintComponent(g);
于 2013-03-14T16:14:50.890 回答
1

问题是您创建了一个空的JFrame,但您没有向其中添加任何组件。由于您的 Grafik2D课程是 a JPanel,因此您需要将其添加到带有以下行的框架中:

j.add(this);

在构造函数中。

于 2013-03-14T16:14:06.900 回答