Jlist 限制所选元素的最大数量 [英] Jlist Limit Maximum Number Selected Elements

查看:22
本文介绍了Jlist 限制所选元素的最大数量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含任意数量元素的 jlist.我想限制用户只能从列表中选择 3 个元素.到目前为止,除了制作列表选择侦听器并从那里编码之外,我还没有找到任何真正方便的方法.

I have a jlist with an arbitrary number of elements. I would like to limit users to selecting only 3 elements from the list. So far, I haven't found any really convenient way of doing so, other than making a list selection listener and coding from there.

Swing 中是否有任何内置方式或最佳实践?

Is there any built in way, or best practice for in Swing?

推荐答案

实施您的自定义选择模型.例如,如下所示.

Implement your customized selection model. for example, like below.

public static void main(String[] args)
{
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.setLocationRelativeTo(null);
    frame.setSize(800, 600);

    JList list = new JList(new Object[]{"111","111","111","111","111","111","111"});
    list.setSelectionModel(new MySelectionModel(list, 3));
    frame.getContentPane().add(new JScrollPane(list), BorderLayout.CENTER);

    frame.setVisible(true);
}

private static class MySelectionModel extends DefaultListSelectionModel
{
    private JList list;
    private int maxCount;

    private MySelectionModel(JList list,int maxCount)
    {
        this.list = list;

        this.maxCount = maxCount;
    }

    @Override
    public void setSelectionInterval(int index0, int index1)
    {
        if (index1 - index0 >= maxCount)
        {
            index1 = index0 + maxCount - 1;
        }
        super.setSelectionInterval(index0, index1);
    }

    @Override
    public void addSelectionInterval(int index0, int index1)
    {
        int selectionLength = list.getSelectedIndices().length;
        if (selectionLength >= maxCount)
            return;

        if (index1 - index0 >= maxCount - selectionLength)
        {
            index1 = index0 + maxCount - 1 - selectionLength;
        }
        if (index1 < index0)
            return;
        super.addSelectionInterval(index0, index1);
    }
}

这篇关于Jlist 限制所选元素的最大数量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆