Заполните основной блок с помощью BorderPanel

Я в основном хочу заполнить мой MainFrame SplitPanel, который бы занимал все пространство, доступное в MainFrame. Я прочитал, что способ сделать это состоит в том, чтобы добавить BorderPanel к MainFrame и добавить SplitPane к центру BorderPanel.

object SwingApp extends SimpleSwingApplication {

  def top = new MainFrame {

    peer.setUndecorated(true) //with this hack it works but I don't feel like it's the purpose of the function

    object splitPane extends SplitPane(Orientation.Vertical, new Button(), new Button())

    contents = new BorderPanel {
      import BorderPanel.Position._

      val center = splitPane
      layout(center)  = Center
    }
  }
}

Моя проблема в том, что BorderPanel, кажется, принимает минимально возможный размер (здесь 0), когда я хочу, чтобы он фактически заполнил весь кадр.

Я нашел решение, установив внутри MainFrame

peer.setUndecorate(true)

но он чувствует себя грязным и, читая документ, я понятия не имею, почему это работает. Разве нет лучшего способа?

1 ответ

Вы можете добавить границу используя BorderFactory и укажите толщину (10 здесь).

panel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0), 10));
Другие вопросы по тегам