2014-03-26 72 views
1

我有一個嵌套的JSplitPane,底部的拆分窗格只會移動到左邊。即使將它移到左邊後,它也不會移動到該位置的右側。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); 
    } 

註釋掉的構造函數也不起作用,我試過兩種都沒有改變任何方法。

爲什麼水平分割面只能在一個方向上移動?垂直分割窗格沒有問題,可以上下移動而不會出現問題。

+1

這可能有事情做與子組件的最小尺寸,但沒有合適的[可運行示例](https://stackoverflow.com/help/mcve)很難100%肯定.. – MadProgrammer

回答

3

分割面板的靈活性將受其所包含組件的最小尺寸的限制。

爲了使分割窗格能夠正常工作,您通常需要在分割窗格中設置組件的最小尺寸,以及分割窗格或其包含組件的首選尺寸。選擇要設置的尺寸是一種藝術,需要了解如何確定拆分窗格的首選尺寸和分隔線位置。

http://docs.oracle.com/javase/tutorial/uiswing/components/splitpane.html#divider

+0

只好設置調整重量 – depperm