在JSplitPane中调整JPanel的大小

时间:2013-08-02 16:13:39

标签: java swing jsplitpane

尝试使用两个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);

enter image description here

我在第一个JPanel中添加了两个不可见的添加按钮。我该如何调整第一个JPanel的大小。

enter image description here

2 个答案:

答案 0 :(得分:8)

您可以通过调用:

来调整拆分窗格分隔符的位置
spane.setDividerLocation(0.5);

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

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

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

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

您可以尝试放大JFrame的起始大小,看看布局如何重新排列。

(旁注:我通常使用右对齐的流程布局将按钮固定在他们自己的小面板的右侧。)

答案 1 :(得分:7)

另一种方法是使用JPanel设置setPreferredSizes(new Dimension(width, height))的维度,并在JSplitPane上调用resetToPreferredSizes()

来自JSplitPane's javadoc

  

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

     

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

     

当用户调整拆分窗格的大小时,将分配新空间   两个组件之间基于resizeWeight属性。一个值   0,默认值,表示右/底组件获取全部   空间,其中值为1表示左/顶部组件全部   空间。

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