7

试图用两个 JPanel 创建一个 JSplitPane。使用以下代码:

 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 的大小。

在此处输入图像描述

4

2 回答 2

11

您可以通过调用来调整拆分窗格分隔线的位置:

spane.setDividerLocation(0.5);

或者您可以重新排列它在两个部分之间划分空间的方式:

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

您可能想弄清楚如何从配置文件面板中删除空白区域,这也会有所帮助。

但我认为真正的问题可能是框架本身的大小。你没有显示那部分代码。

您可以尝试扩大 JFrame 的起始大小并查看布局如何重新排列事物。

(附带说明:我通常通过使用右对齐的流布局将按钮固定在自己的小面板的右侧。)

于 2013-08-02T16:24:45.147 回答
7

另一种方法是设置的JPanel尺寸setPreferredSizes(new Dimension(width, height))并调用resetToPreferredSizes()JSplitPane

来自JSplitPane 的 javadoc

要将组件调整为首选大小,请调用 resetToPreferredSizes。

当用户调整组件的大小时,组件的最小尺寸用于确定组件可以设置的最大/最小位置。如果两个组件的最小大小大于拆分窗格的大小,则分隔线将不允许您调整它的大小。要更改 JComponent 的最小大小,请参阅 JComponent.setMinimumSize(java.awt.Dimension)。

当用户调整拆分窗格的大小时,新空间会根据 resizeWeight 属性在两个组件之间分配。默认值 0 表示右/下组件获得所有空间,而值 1 表示左/上组件获得所有空间。

也许你也可以使用JSplitPane#setDividerLocation(aDouble)

于 2013-08-02T16:25:06.857 回答