代码:
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);
没有滚动条。当项目太多,它们被隐藏时,我无法接触到它们。怎么解决这个问题?
答案 0 :(得分:9)
getContentPane().add(list1scr);
答案 1 :(得分:4)
为了扩展Michael Ardan的答案,您将JList添加到面板而不是JScrollPane。必须将JScrollPane添加到面板中,并且必须将JList添加到ScrollPane才能使其工作。实际上没有必要使用setBounds
或setPreferredSize
- 摆脱它们。当您调用setVisibleRowCount
方法时,JList会处理所有这些。这是您的ScrollPane工作的一个示例。如果仍有问题,请将您自己的代码插入此示例,直到它中断为止。然后告诉我们是什么打破了它。如果没有,请接受Michael的回答。
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);
}
}