1

代码:

list1items = new DefaultListModel();
list1items.addElement("-");
list1 = new JList(list1items);
list1.setSelectionMode (ListSelectionModel.SINGLE_SELECTION);
list1.setBounds(0,0, 100,100);
JScrollPane list1scr = new JScrollPane(list1);
list1scr.setPreferredSize(new Dimension(20, 20));
list1.setVisibleRowCount(8);
getContentPane().add (list1scr);

并且没有出现滚动条。当物品太多时,它们被隐藏起来,我无法触及它们。如何解决这个问题?

4

2 回答 2

10
getContentPane().add(list1scr);
于 2012-12-20T14:02:32.110 回答
4

为了扩展 Michael Ardan 的答案,您将 JList 添加到面板而不是 JScrollPane。必须将 JScrollPane 添加到面板中,并且必须将 JList 添加到 ScrollPane 才能使其工作。真的没有必要使用setBoundssetPreferredSize- 摆脱它们。当您调用该setVisibleRowCount方法时,JList 会处理所有这些。这是您的 ScrollPane 工作的示例。如果您仍然有问题,请将您自己的代码插入此示例,直到它中断。然后告诉我们是什么破坏了它。如果不是,请接受迈克尔的回答。

import java.awt.*;
import javax.swing.*;

public class Temp extends JPanel{
    public Temp(){

        DefaultListModel list1items = new DefaultListModel();
        list1items.addElement("-");
        for(int i = 0; i < 200; i++)
            list1items.addElement("Item " + i);
        JList list1 = new JList(list1items);
        list1.setSelectionMode (ListSelectionModel.SINGLE_SELECTION);
        JScrollPane list1scr = new JScrollPane(list1);
        list1.setVisibleRowCount(8);
        add (list1scr);
    }


    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setContentPane(new Temp());
        frame.pack();
        frame.setVisible(true);
    }
}
于 2012-12-20T15:56:44.177 回答