我有一个JPanel
(名为mainJP),其中有一些按钮和标签(使用BorderLayout
)。接下来,它添加另一个JPanel
(名为JP1),并在其中添加一个带有ScrollPane
的JTable
。我希望能够调整JP2的大小,并依次调整其所有子组件(ScrollPane
和JTable
)。这样一来,无需滚动即可看到JTable
的更多行。同样,为了调整JP1的大小,JP1的其他同级也应自行调整。不确定如何实现。
如图所示,我已经实现了一些功能-完全删除JP1,展开/折叠JP1视图,删除和添加JTable
中的行。
因此,基本上,我希望能够在JP1的底部边框上拖动鼠标以垂直增加JP1及其子组件(ScrollPane
和JTable
)的大小。
如以下一些解决方案中所述,我仍然对应该合并JSpiltPane
在哪个级别上感到困惑-因为它仅允许添加2个组件。我认为所有JP1都应该在JSplitPane
中。但是,可以有多个JP1组件,并且它们是动态添加的。
最佳答案
向JSplitPane添加额外的组件很容易。在要显示组件的每个窗格中放置一个JPanel,然后将组件添加到此面板中-您可以根据需要自定义布局。
这样的事情会将JSplitPane放入已经创建的JFrame中,向每个窗格中添加一个JPanel,然后在左侧添加一些JLabel,在右侧添加一个JTextField。拆分窗格将扩展到其所在的JFrame的大小。
JSplitPane splitPane = new JSplitPane();
JPanel leftPanel = new JPanel();
JPanel rightPanel = new JPanel();
JLabel label1 = new JLabel();
JLabel label2 = new JLabel();
JTextField textField = new JTextField();
GridBagConstraints gBC = new GridBagConstraints();
getContentPane().setLayout(new GridBagLayout());
leftPanel.setLayout(new GridBagLayout());
rightPanel.setLayout(new GridBagLayout());
// I'm not going to bother doing any layout of the label or textfield here
leftPanel.add(label1, new GridBagConstraints());
leftPanel.add(label2, new GridBagConstraints());
rightPanel.add(textField, new GridBagConstraints());
splitPane.setLeftComponent(leftPanel);
splitPane.setRightComponent(rightPanel);
gBC.fill = GridBagConstraints.BOTH;
gBC.weightx = 1.0;
gBC.weighty = 1.0;
getContentPane().add(splitPane, gBC);
pack();