2013-03-14 128 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); 

    } 
} 

我不明白为什么paint方法不会调用?也许当JFrame创建然后automaticaly paintComponent和绘制方法调用..那么我怎么可以代替这个问题?Java PaintComponent not Called

索里我的英文不好..

+0

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

2)你应该删除呼叫到paintComponents或更正拼写? – 2013-03-14 16:08:59

+0

我没有看到你将'Grafik2D'面板添加到'JFrame'中。 – mre 2013-03-14 16:09:29

+0

okey我解决了问题j.add(this);谢谢 – kibar 2013-03-14 16:11:09

回答

1

的问题是,你已经创建了一个空JFrame,但你还没有添加任何成分吧。由于您的Grafik2D类是JPanel,你需要将它与行添加到框架:

j.add(this); 

在构造函数中。

1

有两个问题与您的代码:

1)您Grafik2D类的实例必须是在视觉树。您应该添加这样的:由没有被调用你的意思是不是在JFrame中显示

super.paintComponent(g);