繁体   English   中英

仅显示4条记录,并将滚动条添加到JList

[英]Display only 4 records and add a scroll bar to JList

我添加了一个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);
    }


}

注意:上面是我的代码的简化版本。

尝试将JList添加到JScrollPane并将滚动窗格添加到框架。

    panel.add(new JScrollPane(list), BorderLayout.SOUTH);

getPreferredScrollableViewportSize使用visibleRowCount确定滚动窗格中应显示的行数

setVisibleRowCount()更改JList的大小首选项 ,但是实际大小由布局管理器对JList进行布局确定。 有些布局会注意首选尺寸,而有些则不会。

该文件说:

对于“垂直”布局方向,这无需滚动即可设置或获取要显示的首选行数。 对于HORIZONTAL_WRAP或VERTICAL_WRAP布局方向,它定义了单元格的包装方式。

JavaDoc中有更多详细信息。

使用JScrollPane实现滚动条。

    JScrollPane scrollPane = new JScrollPane(list);
    panel.add(scrollPane, BorderLayout.SOUTH);

教程中的详细信息在这里: 使用JScrollPane

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM