【问题标题】:Java disable mouse click over the jListJava禁用鼠标单击jList
【发布时间】:2019-02-24 06:59:33
【问题描述】:

我用 jList 制作了一个游戏“谁想成为百万富翁”。在我列出的 jList 中,请看下面这张图片

游戏从奖品号码 1 开始,如果答案正确,则增加号码。如果我将鼠标移到奖品上,我也可以通过单击鼠标来修改奖品位置。这就是我要禁用的。 jList 只需要显示奖品,无需通过鼠标单击进行修改。 我也尝试使用 jList 的禁用,但所有颜色都被更改了,我找不到在哪里可以调整禁用的颜色。

什么是我需要的最佳解决方案?

【问题讨论】:

  • 您是否希望用户不能用鼠标选择 JList 单元格?或者您希望他们不要只更改值?
  • 在那种情况下是一样的。用户不能修改 jList 值。 jList 必须是只显示奖品,无需任何鼠标修改。修改只做程序。
  • 对于解决方案,我使用 jList 事件。 jListMouseEntered --> index = jList.getSelectedIndex();对于 jListMouseExited 和 jListMousePressed 和 jListMouseDragged --> jList.setSelectedIndex(index);
  • 请添加您的代码(最少),以便我们运行它并了解您的问题和要求。

标签: java swing mouseevent jlist


【解决方案1】:

实现此目的的最简单方法是添加ListSelectionListener 以将正确的索引恢复到您的JList

看一个例子:

list.addListSelectionListener(new ListSelectionListener() {

    @Override
    public void valueChanged(ListSelectionEvent e) {
        list.setSelectedIndex(myIndex);

    }
});
list.setSelectedIndex(0); //0 plays no role, since listener will select myIndex

无论如何,选定的索引将永远是我的索引。

注意:如果您想稍后更改索引,则必须更改myIndex 变量的值同时不要忘记触发选择侦听器。更准确地说:

myIndex = 15;
list.setSelectedIndex(0); //0 plays no role, since the selection listener uses myIndex

另一种方式(我认为更复杂)是阅读和关注Disable JList Cell Selection Property.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多