Использование Boxlayout приводит к тому, что моя панель составляет только половину размера родительской панели.

Я использую JPanel в качестве основной панели для отображения информации для своих пользователей.

Я создал 3 других Jpanels, используя методы. titlePanel, verbiagePanel, closeButtonPanel. Каждый из этих методов назначается компонентом и добавляется на главную панель. Я использую BoxLayout на главной панели, а также на других панелях.

  Component titlePanel = titlePanel();
  Component verbiagePanel = verbiagePanel();
  Component closeButtonPanel = closeButton();

  this.setTitle("EDI - Help Page");
  //this.setResizable( false );

  centerPanel = new JPanel();
  centerPanel.setLayout(new BoxLayout(centerPanel, BoxLayout.PAGE_AXIS));
  centerPanel.setPreferredSize(new Dimension(700, 300));
  centerPanel.add(titlePanel, BorderLayout.NORTH);
  centerPanel.add(Box.createRigidArea(new Dimension(0, 10)));
  centerPanel.add(verbiagePanel, BorderLayout.CENTER);
  centerPanel.add(Box.createRigidArea(new Dimension(0, 2)));
  centerPanel.add(closeButtonPanel, BorderLayout.SOUTH);
  getContentPane().add(centerPanel);
  this.pack();

Над ней главная панель Method. Когда я компилирую и запускаю диалоговое окно, все выглядит правильно, кроме verbiagePanel. Это только половина размера родительской панели и двух других панелей.

введите здесь описание изображения

Вот код для моей verbiagePanel

 private JPanel verbiagePanel() {
  String titleText = "<html><font size=4><b><center>How To Use This Application</b></center></font></html>";
  String text = "<html>" +
        "  <P align=left><font size=3>" +
        "   &nbsp;&nbsp;&nbsp;&nbsp;1. Add a data to the list of Selected Datasets.<br/>" +
        "   &nbsp;&nbsp;&nbsp;&nbsp;(see below for detailed instructions on adding datasets)<br/>" +
        "   &nbsp;&nbsp;&nbsp;&nbsp;2. Select the project to send data to.<br/>" +
        "   &nbsp;&nbsp;&nbsp;&nbsp;3. Adjust the list of selected 3D or 2D translators if desired.<br/>" +
        "   &nbsp;&nbsp;&nbsp;&nbsp;4. Use the Send button to continue the EDI transaction." +
        "  </font></P>" +
        "  </html>";


  JLabel titleLabel = new JLabel(titleText, JLabel.CENTER);
  titleLabel.setBorder(BorderFactory.createLineBorder(Color.black));

  JLabel bodyLabel = new JLabel(text, JLabel.LEFT);
  bodyLabel.setBorder(BorderFactory.createLineBorder(Color.black));

  JPanel p = new JPanel();
  p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
  p.add(titleLabel);
  p.add(bodyLabel);
  p.setBorder(BorderFactory.createLineBorder(Color.black));
  return p;   
}    

Самое смешное, что если я уберу BoxLayout из Panel. Панель расширится, чтобы соответствовать двум другим панелям. Но расстояние между метками сумасшедшее. В итоге у меня будет как минимум 5 ярлыков на панели. Сейчас я показываю только 2, чтобы упростить задачу.


person jkteater    schedule 06.08.2012    source источник


Ответы (1)


В итоге я использовал модель GrigBagLayout. Он работал как нужно.

person jkteater    schedule 06.08.2012