Настройка панели в центре экрана с помощью макета - PullRequest
3 голосов
/ 09 марта 2010

Я попытался установить положение дочерней панели в центре родительской панели с помощью

parent_panel.setLayout(new BorderLayout());
parent_panel.add(child_panel, BorderLayout.CENTER);

Но это добавляется в середине горизонтального экрана, но вертикально вверху.

Что мне нужно сделать, чтобы добавить его в центр экрана по вертикали и горизонтали?

1 Ответ

8 голосов
/ 09 марта 2010

Если я правильно понимаю, вам нужен интерфейс, похожий на этот:

+-------- Parent panel --------+
|                              |
|                              |
|    +--- Child panel ----+    |
|    |                    |    |
|    |                    |    |
|    |                    |    |
|    |                    |    |
|    +--------------------+    |
|                              |
|                              |
+------------------------------+

... и другие компоненты не добавляются на родительскую панель.

Если это так, у меня есть два варианта, о которых я знаю (основываясь на этом вопросе , на который я, очевидно, ответил):

  1. Используйте GridBagLayout с пустым GridBagConstraints объектом, например:

    parent_panel.setLayout(new GridBagLayout());
    parent_panel.add(child_panel, new GridBagConstraints());
    
  2. Используйте BoxLayout, например:

    parent_panel.setLayout(new BoxLayout(parent_panel, BoxLayout.PAGE_AXIS));
    Box horizontalBox = Box.createHorizontalBox(); 
    horizontalBox.add(Box.createHorizontalGlue()); 
    horizontalBox.add(child_panel); 
    horizontalBox.add(Box.createHorizontalGlue()); 
    Box verticalBox = Box.createVerticalBox(); 
    verticalBox.add(Box.createVerticalGlue()); 
    verticalBox.add(horizontalBox); // one inside the other
    verticalBox.add(Box.createVerticalGlue()); 
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...