2013-03-14 3 views
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 invoke .. Так как я могу заменить эту проблему?Java Paintcomponent Not Called

Сори за мой плохой английский ..

+0

, не вызывается ли вы имеете в виду не показано на JFrame? –

+0

Я не вижу, где вы добавляете панель 'Grafik2D' в' JFrame'. – mre

+0

okey i solve problem j.add (this); Спасибо – kibar

ответ

1

Проблема заключается в том, что вы создали пустой JFrame, но вы не добавляли компоненты. Так как ваш Grafik2D класс является JPanel, вам нужно добавить его к раме с линией:

j.add(this); 

в конструкторе.

1

Есть две проблемы с вашим кодом:

1.) экземпляр вашего Grafik2D класс должен быть в визуальном дереве. Вы должны добавить его так:

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

2.) Вы должны либо удалить вызов paintComponents или исправить орфографию:

super.paintComponent(g);