我正在JPanel中添加JTree項目列表。我希望父JPanel擁有BoxLayout,以便樹可以一個接一個垂直添加。Swing:BoxLayout填充整個JPanel
holder.setLayout(new BoxLayout(holder, BoxLayout.Y_AXIS));
holder.setMaximumSize(new java.awt.Dimension(32767, 24000));
holder.setMinimumSize(new java.awt.Dimension(600, 100));
holder.setPreferredSize(new java.awt.Dimension(600, 100));
多重JTree的組件內加入:
holder.add(tree);
因此,我期望JTree的節點被佔用我的父JPanel的整個寬度,但
父的JPanel使用初始化不知何故它是這樣來的
所以你可以看到它來自父JPanel的某個部分。我希望它填充整個父面板(寬度方向)並向左對齊。
編輯
試圖通過VGR提到的頂端對齊方式後,我得到這個:
所以樹都沒有佔據整個空間依舊。當我展開任何樹,然後一切消失。
我應該也提到這早些時候,當父面板(持有人)的動初始化在一些其他的代碼做這樣
holder.setMaximumSize(new java.awt.Dimension(32767, 24000));
holder.setMinimumSize(new java.awt.Dimension(600, 100));
holder.setPreferredSize(new java.awt.Dimension(600, 100));
holder.setLayout(new java.awt.GridLayout(1, 0));
add(holder); // add to the top parent
這部分是不可達:(我。我只能母公司持有人重新改按我的要求。
SSCCE建議之後,從VGR變化。這不是編譯但我希望SSC。
public BasePanel() extends JPanel{
private javax.swing.JPanel holder;
private GridBagConstraints gbc;
private JPanel treesPanel;
BasePanel(){
init();
}
public init(){ can't access this method
holder.setMaximumSize(new java.awt.Dimension(32767, 25000));
holder.setMinimumSize(new java.awt.Dimension(600, 0));
holder.setPreferredSize(new java.awt.Dimension(600, 0));
holder.setLayout(new java.awt.GridLayout(1, 0));
add(holder);
}
public initTreeComponents(){ // i need to call this for each tree
this.holder.setLayout(new BorderLayout());
treesPanel = new JPanel(new GridBagLayout());
this.holder.add(treesPanel, BorderLayout.PAGE_START);
gbc = new GridBagConstraints();
gbc.gridwidth = GridBagConstraints.VERTICAL;
gbc.anchor = GridBagConstraints.FIRST_LINE_START;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1;
}
public addTree(JTree tree){// to be called for each tree
treesPanel.add(tree,gbc);
}
檢查JTrees的對齊(或任何其他組件你正在添加到BoxLayout)。更多信息[here](http://docs.oracle。COM/JavaSE的/教程/ uiswing /佈局/ box.html#對準)。 –
請顯示[sscce](http://sscce.org)。 –
SSCCE是一個完整的類,帶有導入和'main(String [])',所以不可編譯的代碼片段肯定不是SSCCE。 –