在JSplitPane中调整JPanel的大小

Aru*_*run 5 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);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我在第一个JPanel中添加了两个添加按钮,这些按钮是不可见的.我应该如何调整第一个JPanel的大小.

在此输入图像描述

Lee*_*dor 10

您可以通过调用以下方法调整拆分窗格分隔符的位置:

spane.setDividerLocation(0.5);
Run Code Online (Sandbox Code Playgroud)

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

spane.setResizeWeight(1.0); // equal weights to top and bottom
Run Code Online (Sandbox Code Playgroud)

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

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

您可以尝试扩大JFrame的起始大小,并查看布局如何重新排列内容.

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


Niz*_*ziL 7

另一种方式是设置JPanel具有的尺寸setPreferredSizes(new Dimension(width, height))和调用resetToPreferredSizes()JSplitPane.

来自JSplitPane的javadoc

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

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

当用户调整拆分窗格的大小时,将根据resizeWeight属性在两个组件之间分配新空间.值0(默认值)表示右/底组件获取所有空间,其中值1表示左/顶部组件获取所有空间.

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