任何人都可以解释为什么这段代码没有显示20 x 20的白色椭圆形? 我添加了评论,因此您无需进行太多搜索。我认为我在paint方法中做错了什么。或者是别的什么? 这是代码:
public class Dodge extends JFrame{ //EXTENDED JFRAME
public Dodge(){
JPanel panel = new JPanel();
//
panel.setBackground(Color.BLACK); //
//
add(panel); //
setTitle("Dodging game"); //
setDefaultCloseOperation(EXIT_ON_CLOSE); // GUI SETUP
setSize(500, 400); //
setLocationRelativeTo(null); //
setResizable(true); //
}
public void paint(Graphics g){
g.setColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.WHITE); //THIS METHOD SHOULD GIVE ME AN OVAL
g.fillOval(5, 5, 20, 20);
repaint();
}
public static void main(String[] args){ //
SwingUtilities.invokeLater(new Runnable() { // MAIN THREAD
@Override //
public void run() {
new Dodge().setVisible(true); //
我是初学者,所以请明白错误
另外请解释一下,当我甚至没有打电话时,这种方法如何引起程序的变化?
答案 0 :(得分:4)
paint()
方法。
您的椭圆没有显示,因为它隐藏在框架或标题栏的工具栏后面。 (最重要的是你所谓的)。
将fillOval更改为g.fillOval(50, 50, 20, 20);
,您将看到它。
另外,如果覆盖它,请务必致电super.paint(g)
。
另外,请勿使用repaint()
方法拨打paint()
。