2012-04-20 7 views
0

Хорошо, что прямо сейчас у меня есть JFrame, который содержит JLayeredPane. Таким образом, это запускает графический интерфейс игры прямо сейчас. Я хочу добавить кнопки в сторону этого кадра, чтобы я мог вводить входы от пользователя через кнопки. Любые идеи?Добавление нескольких JPanel в JFrame

class mapGUI extends JFrame{ 
     layeredPane = new JLayeredPane(); 
    mapSize = new Dimension(mapColumn * 16 , mapRow * 16); 

    layeredPane.setPreferredSize(mapSize); 
    //Adding the layeredPane to the frame. 
    getContentPane().add(layeredPane); 

    //Adds the appropriate labels to the panels and adds them to the layeredPane. 
    addPlayerPos(); 
    addDungeonItems(); 
    addDungeonFloor(); 

    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    setResizable(false); 
    pack(); 
    setLocationRelativeTo(null); 
    setVisible(true); 
} 

Это часть кода, где я создать JFrame и добавить JLayeredPane к нему.

+2

Извините, не знаю, или идеи без публикации [SSCCE] (http://sscce.org/) продемонстрировали ваши проблемы – mKorbel

+0

это лучше сейчас? – saviok

+0

где вы хотите добавить кнопки и как вы собираетесь их использовать? –

ответ

1

Если вы хотите использовать кнопки в игре, вы можете использовать BorderLayout и поместить кнопки на восток/запад от макета и добавить LayeredPane к центру. Если кнопки должны пересекаться с экраном игры, вы можете использовать layeredPaneObj.add(buttonPanel,new Integer(0)), это будет держать панель сверху.

+0

@JakubZaverka обязательно прочтите. «_add кнопки в сторону этого кадра_», а не ** верх ** рамки. –

+0

Извините, общая путаница ... –

1

Сначала вы должны изучить основные сведения о layout managers. Как упоминалось ранее, имеют особый взгляд на BorderLayout для ваших требований

4

1) не использовать JLayeredPane, потому что есть ограничение до 6. слоев, использовать JLayer (Java7) на основе JXLayer (Java6)

2) используя JLayeredPane составляет около setSize/setBounds, которые не комфортабельный для resiziable Container

3) использовать CardLayout вместо JLayeredPane,

4) или использовать JTabbedPane

+0

+1 для [JLayer] (http://docs.oracle.com/javase/tutorial/uiswing/misc/jlayer.html). Также, пожалуйста, поправьте меня, если я ошибаюсь. CardLayout не может отображать несколько карт одновременно, поэтому он не должен быть хорош для игр, где используются несколько слоев. –

+0

@Nitin Chhajer правильно, вы правы, может быть, я ошибаюсь (я использовал JLayeredPane только для хакеров UIManagers), но я думаю, что это сложно использовать JLayeredPane для игры (поправьте меня на рендеринг), это причина, почему JLayer существует ... – mKorbel

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