0

我的 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);
    }
4

3 回答 3

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);
    }
}
于 2012-05-05T22:26:11.700 回答
1

我想知道您是否只是没有将 myList 添加到允许它调整大小的布局中,所以它太小了。或者你不显示到底是什么意思?例如,如果您将它添加到 BorderLayout 的中心,那么它是否有效,至少在您调整窗口大小的情况下?

于 2012-05-05T22:27:01.540 回答
0

尝试增加 JList 的高度

于 2018-01-23T12:27:35.373 回答