0

私の JList には限られた数の行しか表示されませんが、私の listData-vector には 70 を超える項目があります..

私は1つのリスト項目に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 に答える