我有一个嵌套的JSplitPane,底部的拆分窗格只会向左移动。即使我把它移到左边,它也不会移动到该位置的右侧。
dataEntry=new JTabbedPane();
formformat=new JPanel();
dataEntry.addTab("Table Entry", tableScroll);
dataEntry.setMnemonicAt(0, KeyEvent.VK_1);
dataEntry.addTab("Form Entry", formformat);
dataEntry.setMnemonicAt(0, KeyEvent.VK_2);
utils=new JTabbedPane();
helphtml=new JEditorPane();
utils.addTab("Field Help", helphtml);
utils.setMnemonicAt(0, KeyEvent.VK_3);
microImage=new JLabel();
utils.addTab("Image Navigation", microImage);
utils.setMnemonicAt(0, KeyEvent.VK_4);
//leftright=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
// new JPanel().add(dataEntry), new JPanel().add(utils));
leftright=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
leftright.add(dataEntry);
leftright.add(utils);
leftright.setContinuousLayout(true);
leftright.setOneTouchExpandable(true);
try {
System.out.println("divx loc"+sa.getXDivider(username));
leftright.setDividerLocation(sa.getXDivider(username));
} catch (Exception e1) {
leftright.setDividerLocation(750);
}
createImage();
if(!imgurl.equals("NONE"))
topbot=new JSplitPane(JSplitPane.VERTICAL_SPLIT,imgpnl, leftright);
else
topbot=new JSplitPane(JSplitPane.VERTICAL_SPLIT,batchImage, leftright);
topbot.setOneTouchExpandable(true);
try {
System.out.println("divy loc"+sa.getYDivider(username));
topbot.setDividerLocation(sa.getYDivider(username));
} catch (Exception e) {
topbot.setDividerLocation(600);
}
注释掉的构造函数也不起作用,我已经尝试了两种方法,两种方法都没有改变任何东西。
为什么水平分割板只朝一个方向移动?垂直分割窗格没有问题,可以上下移动而没有任何问题。
答案 0 :(得分:3)
分割窗的灵活性将受到其所包含组件的最小尺寸的限制。
要使拆分窗格正常工作,通常需要在拆分窗格中设置组件的最小大小,以及拆分窗格或其包含的组件的首选大小。选择您应该设置的尺寸是一项艺术,需要了解如何确定分割窗格的首选大小和分隔符位置。
来自http://docs.oracle.com/javase/tutorial/uiswing/components/splitpane.html#divider