2015-05-08 110 views
1
setLayout(new BorderLayout()); 
    add(listScroller, BorderLayout.WEST); 

当我只是这样做我的名单被留下并填写所有列大小。但是,当我添加更多的东西。JList左附和填充

setLayout(new GridBagLayout()); 
    GridBagConstraints gc = new GridBagConstraints(); 

    gc.gridx = 2; 
    gc.gridy = 0; 
    add(nameLabel, gc); 

它正在变小,当我调整大小时,它将变得不可见。我怎样才能适应左边的列表,其他的东西在右边。

额外的问题:如果列表中的元素很少,我的滚动器不显示。无论发生什么,我都想看看滚轮。

回答

2

首先,你可能想使用一个单一的布局管理器...

setLayout(new GridBagLayout()); 
GridBagConstraints gc = new GridBagConstraints(); 

gc.gridx = 0; 
gc.gridy = 0; 
gc.weighty = 1; 
gc.fill = GridBagConstraints.BOTH; 
gc.gridheight = GridBagConstraints.REMAINDER; 
add(listScroller, gc); 

gc.gridx = 2; 
gc.gridy = 0; 
gc.weighty = 0; 
gc.fill = GridBagConstraints.NONE; 
gc.gridheight = 1; 
add(nameLabel, gc); 

或者

setLayout(new BorderLayout()); 
add(listScroller, BorderLayout.WEST); 
add(nameLabel); 

取决于你想要达到

更多见Laying Out Components Within a Container什么详情

额外的问题:如果列表中的元素很少,我的滚动器不显示。无论发生什么,我都想看看滚轮。

你会想看看JScrollPane#setVerticalScrollBarPolicyJScrollPane#setHorizontalScrollBarPolicy