我遇到了Jlist的问题。我有ScrollPane,我添加了Jlist。有时候我没有看到列表中的第一项。(我也看到了列表中其他项目的这种行为)
我感谢任何帮助。
感谢,
这是代码段
-JList创建:
jAllScrollPane = new JScrollPane();
jAllScrollPane.getViewport().add(allNetLayer);
allNetLayer.setVisibleRowCount(3);
我通过以下方法将项目添加到JList
void addItemToList(String lay)
{
layerInit =1;
if(lay.compareTo("All") ==0)
{
listData.clear();
}
if(lay.compareTo("DONE") == 0)
{
allLay.setListData(listData);
jAllScrollPane.updateUI();
}
else
{
listData.addElement(lay);
}
layerInit =0;
}
GUI创建:
javax.swing.GroupLayout jLogPanelLayout = new javax.swing.GroupLayout(jLogPanel);
jLogPanel.setLayout(jLogPanelLayout);
jLogPanelLayout.setHorizontalGroup(
....
....
.addComponent(jAllScrollPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 200, javax.swing.GroupLayout.DEFAULT_SIZE))
....
....
.addContainerGap())
);
jLogPanelLayout.setVerticalGroup(
....
....
.addComponent(jAllScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 190, javax.swing.GroupLayout.PREFERRED_SIZE)
....
....
.addGap(20,20,20))))
);
jTabbedPane1.addTab("All", jLogPanel);
答案 0 :(得分:1)
您发布的代码非常混乱。编译它也很困难。
我唯一可以为你做的是
BorderLayout
,GridLayout
等或MigLayout
fire*(data changed)
方法,重绘()new JScrollPane(<panel inside>)
addItemToList
应该有single responsibility - 添加项目到列表 - 条件不应该在那里import
- 而不是每次javax.swing.GroupLayout
layerInit
答案 1 :(得分:0)
而不是使用:
jAllScrollPane = new JScrollPane();
jAllScrollPane.getViewport().add(allNetLayer);
添加Component,使用方法JScrollPane.html#setViewportView(java.awt.Component)(如果你不想使用带参数的JScrollPane构造函数)。
不直接向JScrollPane构造函数提供视图的应用程序应使用此方法指定将在滚动窗格中显示的可滚动子项。