2014-01-07 4 views
1

У меня проблема с моим JPanel, который занимает всего JFrame. Я хочу добавить два JPanel в одном JFrame. Я помогаю себе с плагином eclipse WindowMaker, но я также попытался скопировать макет вручную - безрезультатно. Я не могу изменить размер моего JPanel, например. составляют 50% от его размера. Я прочитал об этом случае и попытался понять LayoutManagers. Но даже если я поместил свой JLabel в угол или любую конкретную сторону, пока ничего не изменится. Может кто-нибудь мне помочь?JPanel брать полностью JFrame размер. BorderLayout

Образец образца: частный JPanel contentPane;

/** 
* Create the frame. 
*/ 
public GUI() { 

    setTitle("GALAXY INVADERS: CASTELO EDITION"); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    setBounds(200, 100, 1000, 600); 


    getContentPane().setLayout(new BorderLayout()); 

    // init of the Panel 
    contentPane = new MyPanel2(); 

    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    contentPane.setLayout(new BorderLayout(300, 400)); 
    setContentPane(contentPane); 

} 

MyPanel2 класс, который расширяет JPanel.

+0

Судя по названию вашего GUI, кажется, вы делаете игру. Если это так, я рекомендую вам иметь [правильный игровой цикл] (http://www.java-gaming.org/index.php?topic=24220.0). (Если я ошибаюсь, скажите мне, и я удалю этот комментарий) –

+0

Я думаю, вы смущены тем, что на самом деле представляет собой панель контента. Работа через [Использование контейнеров верхнего уровня] (http://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html) и [Укладка компонентов в контейнере] (http://docs.oracle. com/javase/tutorial/uiswing/layout/index.html). –

+0

@JoshM Да, это игра. Я переопределил метод рисования, который перекрашивает всю игру. – krzakov

ответ

2

BorderLayout имеет 5 имеющихся позиции, на которые добавляются компоненты ...

По умолчанию CENTER позиции будет занимать всю доступную площадь контейнера.

Попробуйте разместить другие компоненты на разных позициях или попробуйте другой менеджер компоновки.

Взгляните на Laying Out Components Within a Container для получения более подробной информации ...

+0

Что я должен исправить? Пример кода? – krzakov

+0

Вы можете использовать 'add (компонент, BorderLayout.NORTH)' например, чтобы добавить компонент в позицию «NORTH» в контейнере, или вы можете взглянуть на ссылку и найти менеджер макетов, который лучше соответствует вашим потребностям. Если вы хотите добавить только два компонента, которые разделяют 50% доступной ширины или высоты, вы можете использовать 'GridLayout' – MadProgrammer

+0

. Он по-прежнему добавляет еще один JPanel на старый. Я хочу иметь две отдельные панели. – krzakov

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