Настройка размера JPanels в JSplitPane

Попытка создать JSplitPane с двумя JPanels. Со следующим кодом:

 JTable table = new JTable(qualifierModel);
  table.setDefaultEditor(String.class, new QualifierCellEditor());


  JPanel qualiferPanel = new JPanel();
  JScrollPane jp = new JScrollPane(table);
  qualiferPanel.add(new JLabel(Translator.getText("Select one qualifier for each section # from the table.")));
  qualiferPanel.add(jp);
  qualiferPanel.setVisible(true);

  JToolBar btnBar = new JToolBar();
  btnBar.setFloatable(false);
  btnBar.add(Box.createHorizontalGlue());
  btnBar.add(addItemButton);
  btnBar.add(removeItemButton);
  setLayout(new BorderLayout());


  profilePanel.add(new JScrollPane(profileTable), BorderLayout.NORTH);
  profilePanel.add(btnBar, BorderLayout.SOUTH);

  JSplitPane spane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
  spane.setTopComponent(profilePanel);
  spane.setBottomComponent(qualiferPanel);

  setLayout(new BorderLayout());
  add(spane,BorderLayout.CENTER);

Я добавил две кнопки добавления в первый JPanel, который не отображается. Как мне отрегулировать размер первого JPanel.

2 ответа

Решение

Вы можете отрегулировать положение разделителя разделенной панели, вызвав:

spane.setDividerLocation(0.5);

Или вы можете изменить способ разделения пространства между двумя частями:

spane.setResizeWeight(1.0); // equal weights to top and bottom

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

Но я думаю, что настоящей проблемой может быть размер самой рамки. Вы не показывали эту часть кода.

Вы можете попытаться увеличить начальный размер JFrame и посмотреть, как макеты переставляют вещи.

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

Я думаю, что лучший способ установить два JPanel измерение с setPreferredSize(new Dimension(width, height)) и вызвать resetToPreferredSize() на JSplitPane,

От Javadoc JSplitPane

Чтобы изменить размеры компонентов до их предпочтительных размеров, вызовите resetToPreferredSizes.

Когда пользователь изменяет размеры Компонентов, минимальный размер Компонентов используется для определения максимальной / минимальной позиции, на которую могут быть установлены Компоненты. Если минимальный размер двух компонентов больше размера разделенной панели, разделитель не позволит вам изменить его размер. Чтобы изменить минимальный размер JComponent, см. JComponent.setMinimumSize(java.awt.Dimension).

Когда пользователь изменяет размер разделенной панели, новое пространство распределяется между двумя компонентами на основе свойства resizeWeight. Значение по умолчанию 0 указывает, что правый / нижний компонент получает все пространство, а значение 1 указывает, что левый / верхний компонент получает все пространство.

Может быть, вы можете использовать JSplitPane#setDividerLocation(aDouble) тоже.

Другие вопросы по тегам