2016-02-27 2 views
0

Форма, которая является fillOval, не отображается при запуске моей программы. Я расширил JPanel, но кажется, что что-то не так, потому что я не вижу fillOval. Вот мой код:Форма не отображается на paintComponent метод с использованием Swing

public class MovingBall extends JPanel{ 

public MovingBall(){ 

} 
public static void main(String[] args) { 
    JFrame frame = new JFrame(); 
    JPanel panel = new JPanel(); 
    frame.add(panel); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(500,700); 
    panel.setBackground(Color.BLACK); 
    frame.setVisible(true); 
    MovingBall movingBall = new MovingBall(); 
    frame.add(movingBall); 
} 
@Override 
public void paintComponent(Graphics canvas){ 
    super.paintComponent(canvas); 

    canvas.setColor(Color.BLUE); 
    canvas.fillOval(50, 90, 20, 20); 

} 

}

+0

Вы забыли добавить экземпляр от 'MovingBall' до 'JFrame'? – MadProgrammer

+0

Кроме того, как правило, это плохая идея создать окно в конструкторе (обычно), но особенно в таком компоненте – MadProgrammer

+0

@MadProgrammer okay Я редактировал свой код. Я создаю и добавляю экземпляр MovingBall в JFrame. Но все равно не работает. –

ответ

0

Перемещение линии перед frame.setSize(500,700); вызова

MovingBall movingBall = new MovingBall(); 
frame.add(movingBall); 

или позвоните

frame.revaliedate(); 
frame.repaint(); 

после добавления

Смежные вопросы