我无法将我骑过的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");
}
}
答案 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