[英]JList only show 9 items
在我的應用程序中,我使用帶有 JScrollpane 的 JList 來顯示操作日志。 為此,我這樣做:
logModel = new DefaultListModel();
logModel.ensureCapacity(300);
logList = new JList(logModel);
logList.setPreferredSize(new Dimension(300, 150));
logList.setVisibleRowCount(6);
JScrollPane sp = new JScrollPane(logList);
sp.setHorizontalScrollBar(null);
GridBagConstraints gbc_logList = new GridBagConstraints();
gbc_logList.anchor = GridBagConstraints.WEST;
gbc_logList.gridx = 0;
gbc_logList.gridy = 6;
gbc_logList.weightx = 1.0;
gbc_logList.weighty = 0.5;
gbc_logList.gridwidth = 3;
pane.add(sp, gbc_logList);
但是,如果我開始添加項目,則列表僅顯示最大值。 列表中有 9 個項目。 但是 model 報告了正確大小的大小(如示例 11)我添加了一個序列
private void createFolderSequence() {
logModel.add(logModel.getSize(), "Create Folder: JNIFolder in root");
int res = createFolder("JNIFolder", "/");
logModel.add(logModel.getSize(), "Created: " + Integer.toString(res));
logModel.add(logModel.getSize(), "Create Folder: JNIFolder2 in /JNIFolder/");
res = createFolder("JNIFolder2", "/JNIFolder/");
logModel.add(logModel.getSize(), "Created: " + Integer.toString(res));
logModel.add(logModel.getSize(), "Rename Folder: JNIFolder2 to NIFolder3");
res = renameFolder("/JNIFolder/JNIFolder2","JNIFolder3");
logModel.add(logModel.getSize(), "Renamed: " + Integer.toString(res));
logModel.add(logModel.getSize(), "Remove Folder: JNIFolder2");
res = removeFolder("/JNIFolder/JNIFolder2");
logModel.add(logModel.getSize(), "Removed: " + Integer.toString(res));
System.out.println(logModel.getSize());
logModel.add(logModel.getSize(), "Remove Folder: JNIFolder3");
logModel.add(logModel.getSize(), "Remove Folder: JNIFolder3");
res = removeFolder("/JNIFolder/JNIFolder3");
logModel.add(logModel.getSize(), "Removed: " + Integer.toString(res));
System.out.println(logModel.getSize()); //Print 11
}
控制台最后顯示 11 個,但列表中只有 9 個項目,如果我向下滾動也是如此。 知道我做錯了什么或錯過了什么嗎?
logList.setPreferredSize(new Dimension(300, 150));
不要硬編碼首選大小。 (刪除該聲明)。
您希望 JList 在從 ListModel 添加/刪除項目時動態計算其首選大小。
然后將根據需要顯示滾動條。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.