我添加了一个JList,并使其一次只显示4条记录。如果有超过4条记录,则用户应该能够滚动并查看其他记录。但在我的情况下,我会看到我添加的所有8-10条记录。代码未显示前4个记录和滚动条。有人能告诉我我失踪的是什么吗?
import java.awt.BorderLayout;
public class FrameTest {
private JPanel panel;
private JFrame frame;
private FrameTest ft;
private JList list;
public FrameTest() {
initComponents();
ft = this;
}
private void initComponents() {
frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
panel = new JPanel();
panel.setBorder(new EmptyBorder(5, 5, 5, 5));
panel.setLayout(new BorderLayout(0, 0));
frame.getContentPane().add(panel);
list = new JList();
list.setVisibleRowCount(4);
list.setModel(new AbstractListModel() {
String[] values = new String[] {"adf", "gr", "rg", "g", "tg", "gt", "tg", "tg", "t", "gt", "gt"};
public int getSize() {
return values.length;
}
public Object getElementAt(int index) {
return values[index];
}
});
list.setSelectedIndex(1);
panel.add(list, BorderLayout.SOUTH);
frame.setLocationByPlatform(true);
frame.pack();
frame.setVisible(true);
}
}
注意:上面是我的代码的简化版本。
答案 0 :(得分:1)
尝试将JList
添加到JScrollPane
并将滚动窗格添加到您的框架中。
panel.add(new JScrollPane(list), BorderLayout.SOUTH);
visibleRowCount
使用getPreferredScrollableViewportSize
来确定应在滚动窗格中显示的行数
答案 1 :(得分:1)
setVisibleRowCount()
更改了JList的首选项,但实际大小取决于布局管理器正在布置JList。有些布局会考虑首选尺寸,有些则不会。
文档说:
中的更多详细信息对于VERTICAL布局方向,设置或获取首选 要显示的行数,无需滚动。为了 HORIZONTAL_WRAP或VERTICAL_WRAP布局方向,它定义了如何 细胞包裹。
答案 2 :(得分:1)
使用JScrollPane
来实现滚动条。
JScrollPane scrollPane = new JScrollPane(list);
panel.add(scrollPane, BorderLayout.SOUTH);
本教程中的详细信息:Using JScrollPane