【问题标题】:Override list selection in Swing在 Swing 中覆盖列表选择
【发布时间】:2011-02-17 06:59:32
【问题描述】:

我想进行列表选择,这样当我第一次选择一个项目时,它会在我选择第二个项目时被选中,那么两者都应该被选中,第一个选择应该保持原样。我已将列表选择模式设置为多项选择。但仍然必须按ctrl 键来做这件事。 我想在不按ctrl 键的情况下进行操作。

如何保持列表项被选中?

这是我设置选择模式的那一行:

list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

编辑: 正如 StanislavL 所建议的那样,我尝试了以下操作,但对我没有用。

            DefaultListSelectionModel model = new DefaultListSelectionModel();
            model.removeSelectionInterval(0, 2);
            user_list.setSelectionModel(model);

【问题讨论】:

    标签: java swing selection jlist


    【解决方案1】:

    多选要求按下Ctrl键是一个众所周知的约定。与使用 Shift 键选择一系列值相同。

    就我个人而言,我永远不会花精力去改变这种行为,因为它会使已经熟悉其他应用程序的用户感到困惑。

    【讨论】:

    • +1 我一直在公司遇到这种情况。他们希望改变完善的惯例,因为“这就是他们想要的”……这真的是他们想要的吗?可能不会……从长远来看不会!
    【解决方案2】:

    尝试替换列表中的 ListSelectionModel。使用

    public void setSelectionModel(ListSelectionModel selectionModel)
    

    您可以使用 DefaultListSelectionModel 并覆盖

    public void removeSelectionInterval(int index0, int index1)
    

    如果项目已被选中,则调用 super.remove()。

    【讨论】:

    • 我试过了,但没有任何变化。我在我的问题中添加了我的代码
    • 我没有看到您在代码中覆盖 removeSelectionInterval 的位置。
    • 我阅读了关于removeSelectionInterval(nt index0, int index1) 的文档,但无法完全覆盖它。不知道实际在里面做什么。你能帮我多一点吗。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 2012-03-30
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    相关资源
    最近更新 更多