我正在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。 –