Проблемы с макетом Java - PullRequest
3 голосов
/ 14 января 2012

В моем проекте я пытался добавить JConsonle к ведьме JPanel, содержащейся в другой JPanel.

Проблема в том, что JConsole продолжает устанавливаться на 5 пикселей от вершины JPanel.AtСначала я подумал, что это правильно настроенный контейнер, но после того, как он выделил красный фон, я понял, что консоль устанавливается на 5 пикселей сверху.

Я также пытался использовать BorderLayout, чтобы установить егов СЕВЕР или ЦЕНТР JPanel, но это не работает, либо.

Это мой код:

public class MonopolyPanel extends JPanel {

  JPanel consoleP = new JPanel();
  JConsole console = new JConsole();

  MonopolyPanel(){

   this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
   console.setPreferredSize(new Dimension(530, 300));  
   consoleP.add(console);
   this.add(consoleP);

  }
}

Ответы [ 3 ]

3 голосов
/ 14 января 2012

Консоль добавлена ​​в consoleP, которая по умолчанию имеет FlowLayout, который по умолчанию имеет вертикальный и горизонтальный зазор 5 пикселей.Подчеркивая, что с FlowLayout с нулевыми пробелами следует делать трюк

consoleP == new JPanel(new FlowLayout(align, 0, 0));
0 голосов
/ 14 января 2012

По моему опыту, лучший и наиболее гибкий макет - это GridBagLayout.

99% панелей в Swing, которые я создаю, - это GridBagLayout, в противном случае невозможно получить все правильно.

Потому что сВ этом макете вы можете установить вес, точные параметры заполнения и интервала.

Другие менеджеры макетов ограничены и не очень настраиваемы.

0 голосов
/ 14 января 2012

Вы смотрели на Border с?

Возможно, вам нужно установить границу JPanel или JConsole в пустое поле, например:

component.setBorder(BorderFactory.createEmptyBorder());

Вы также можете поискать что-нибудь о вставках в Javadocs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...