我不能把我骑过的JPanel加到框架上。它没有显示

时间:2014-01-16 10:58:17

标签: java swing awt

我无法将我骑过的jpanel添加到框架中。它没有显示它。我通过获取内容窗格添加它但它不起作用。我应该怎么做。 我的问题在哪里 提前谢谢你

import java.awt.*;
import javax.swing.*;
public class BigBang {
    JFrame worldFrame;
    WorldPanel worldPanel;
    int worldX=800;
    int worldY=600;
    public void draw(){
        worldFrame=new JFrame("world");
        worldFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        worldPanel=new WorldPanel(new Dimension(800,600));
        worldFrame.setLayout(new FlowLayout());
        worldFrame.setSize(worldX,worldY);
        worldFrame.getContentPane().add(worldPanel);
        System.out.println("done");
        worldFrame.setVisible(true);
    }
    public static void main(String[] args) {
        BigBang b=new BigBang();
        b.draw();
    }
}
class WorldPanel extends JPanel{
    private static final long serialVersionUID = 1L;
    Graphics graphic;   
    WorldPanel(Dimension d){
        setPreferredSize(d);
    }
    public void paintComponents(Graphics g) {
        super.paintComponents(g);
        System.out.println("it is in");
        graphic=g;
        setBackground(Color.black);
        int firstx=60;
        int firsty=90;
        g.setColor(Color.white);
        g.fillOval(firstx, firsty, 30, 30); 
        System.out.println("here");
    }
}

3 个答案:

答案 0 :(得分:4)

您需要覆盖paintComponent()方法时出现拼写错误,但您已覆盖paintComponents()。改变WorldPanel类中的方法,这有帮助。

答案 1 :(得分:0)

请注意,如果您使用了@Override注释,则编译器会产生错误,因为此方法不会覆盖任何内容:)使用此注释是一个很好的习惯IMO。

@Override
public void paintComponents(Graphics g) {
    super.paintComponents(g);
}

答案 2 :(得分:-4)

覆盖方法:

public void paint(Graphics g) {
...
}

而不是WorldPanel中的paintComponents