簡體   English   中英

JList 僅顯示 9 項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM