2014-12-25 6 views
2

Я начинаю, и я не знаю, как добавить в JFrame больше объектов. Как я могу добавить в JFrame несколько объектов JPanel? Ниже я попытался.Java добавить несколько объектов JPanel в JFrame

Благодарим за помощь.

public class Init extends JFrame{ 

    public Init(){ 
     super("Ball"); 

     Buttons t = new Buttons(); 

     JumpingBall b1 = new JumpingBall(); 
     JumpingBall b2 = new JumpingBall(); 

     t.addBall(b1); 
     t.addBall(b2); 

     add(b1); 
     add(b2); 


     setSize(500,500); 
     setResizable(false); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setLocationRelativeTo(null); 
    } 

} 
+0

Вы должны использовать макеты. Читайте это: http://docs.oracle.com/javase/tutorial/uiswing/layout/ – Ivan

+0

В чем вопрос? –

ответ

1

Предполагая, что JumpingBall расширяет JPanel, вы можете ознакомиться с менеджерами по размещению java здесь: Link.

по умолчанию Layout для JFrame является BorderLayout, и если вы не указали, где вы хотите, чтобы добавить компонент, BorderLayout поставит его в центр по умолчанию. В BorderLayout вы не можете иметь больше одного компонента в той же области. Итак, в вашем примере у вас будет только вторая панель JumpingBall в вашем фрейме. Если вы хотите иметь более одного компонента в центре, вам нужно будет создать JPanel и добавить к нему эти компоненты с помощью другого макета. Обычными тремя макетами являются BorderLayout, FlowLayout и GridLayout. Пожалуйста, ознакомьтесь с приведенной ссылкой выше, чтобы узнать, как расположены компоненты.

1

Вы можете добавить ряд JPanel объектов в JFrame, используя метод add. Если отображается только один, вам может потребоваться изменить параметры макета или использовать диспетчер компоновки (см. Еще here).

+0

thans .. я прочту его – TomP

+0

Хорошо, приятно слышать. Не забудьте проголосовать как лучше всего, если вы считаете, что он отвечает на ваш вопрос более полно. –

1

Вы видите только одно, потому что оно перекрывает друг друга. Просто укажите setbound(x,y,x1,y1) для вашего компонента панели, и вы увидите свою панель в месте.

или используйте setLayout(new FlowLayout());, который собирается заказать ваш компонент в соответствии с другими, чтобы вы не переопределяли друг друга.

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