我的JList只显示有限数量的行,但我的listData-vector有超过70个项目。
我使用jpanel作为一个列表项并将其添加到矢量 - >之后 - > mylist.setListData(theVector);
visibleRowCount可以设置为100或8,不重要......
编辑:我在JScrollPane中有我的JList,因为我在布局设计器中拖了它
EDIT2:有些代码......
private void initSubjectList() {
try {
Vector listData = new Vector();
Vector<Subject> subjects = Subject.loadFromDB();
for (Subject actSubject : subjects) {
ListPanel listPanel = new ListPanel();
listPanel.setSubject(actSubject);
JLabel textLabel = new JLabel();
// ... Some properties of my label...
listPanel.setLayout(new BorderLayout());
listPanel.add(textLabel, BorderLayout.WEST);
listData.add(listPanel);
}
this.list_subjects.setListData(listData);
this.list_subjects.setSelectedIndex(0);
this.list_subjects.updateUI();
initGradeList(grades, 0);
} catch (Exception ex) {
_parent.showError(ErrorPanel.TYPE_OKAY, ErrorPanel.TEXT_SQLEXCEPTION);
}
答案 0 :(得分:3)
将您的JList放在JScrollPane中:
JList list = new JList();
// ...
JScrollPane scrollPane= new JScrollPane(list);
// add scrollpane instead of list to hierarchy.
以下是一个完整的工作示例:
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
public class Test2 {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
initUI();
}
});
}
protected static void initUI() {
JFrame frame = new JFrame("test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Vector<String> data = new Vector<String>();
for (int i = 1; i < 100; i++) {
data.add("Entry " + i);
}
JList list = new JList(data);
list.setVisibleRowCount(8);
JScrollPane scrollPane = new JScrollPane(list);
frame.add(scrollPane);
frame.pack();
frame.setVisible(true);
}
}
答案 1 :(得分:1)
我想知道你是不是只是将myList添加到允许它调整大小的布局中,所以它太小了。或者你没有表现出什么意思? 例如,如果将它添加到BorderLayout的中心,那么它是否正常工作,至少如果你调整窗口大小?
答案 2 :(得分:0)
尝试增加JList的高度