Java 仅显示4条记录,并向JList添加滚动条
我添加了一个JList,并使其一次仅显示4条记录。如果有4条以上的记录,用户应该能够滚动并查看其他记录。但就我而言,我可以看到我添加的所有8-10条记录。代码未显示前4条记录和滚动条。有人能告诉我我错过了什么吗Java 仅显示4条记录,并向JList添加滚动条,java,swing,jlist,Java,Swing,Jlist,我添加了一个JList,并使其一次仅显示4条记录。如果有4条以上的记录,用户应该能够滚动并查看其他记录。但就我而言,我可以看到我添加的所有8-10条记录。代码未显示前4条记录和滚动条。有人能告诉我我错过了什么吗 import java.awt.BorderLayout; public class FrameTest { private JPanel panel; private JFrame frame; private FrameTest ft; priva
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);
}
}
注意:以上是我的代码的简化版本。尝试将
JList
添加到JScrollPane
并将滚动窗格添加到您的框架中
panel.add(new JScrollPane(list), BorderLayout.SOUTH);
getPreferredScrollableViewportSize
使用visibleRowCount
来确定滚动窗格中应显示的行数setVisibleRowCount()
更改JList的大小首选项,但实际大小由布局管理器布局JList决定。有些布局会注意到首选的尺寸,而其他布局则不会
文件说:
对于垂直布局方向,这将设置或获取首选方向
无需滚动即可显示的行数。对于
水平环绕或垂直环绕布局方向,它定义了如何
细胞被包裹起来
更多详细信息请参见。使用
JScrollPane
实现滚动条
JScrollPane scrollPane = new JScrollPane(list);
panel.add(scrollPane, BorderLayout.SOUTH);
此处教程中的详细信息:您没有阅读JList上的一些文档:
setVisibleRowCount()
应该有帮助。