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

    }
}

ペイント メソッドが呼び出されない理由がわかりません。おそらく、JFrame が作成されると、自動的に paintComponent と paint メソッドが呼び出されます..では、この問題をどのように置き換えることができますか?

私の悪い英語でごめんなさい..

4

2 に答える 2

1

コードには 2 つの問題があります。

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クラスは であるためJPanel、次の行でフレームに追加する必要があります。

j.add(this);

コンストラクターで。

于 2013-03-14T16:14:06.900 に答える