【问题标题】:How do I make a JButton clickable only once without adding count on subsequent clicks?如何使 JButton 仅可点击一次而不增加后续点击次数?
【发布时间】:2018-11-05 22:56:02
【问题描述】:

我有一个JButton 控件网格,单击按钮将显示一个数字。单击的前 7 个按钮为黄色,第 8 个按钮为绿色。我通过使用“计数”来做到这一点。但是,我目前面临一个问题,即我单击同一个按钮,它仍然会增加计数,并且到第 8 次单击时,该按钮将从黄色变为绿色。

我在下面附上了我的动作监听器方法:

@Override
public void actionPerformed (ActionEvent event)
{
    for (int i = 0; i < totalButton; i++)
    {
        if (event.getSource() == jbArray[i])
        {
            jbArray[i].setText (String.format("%d", alist.get(i)));

            if (count == 8)
            {
                jbArray[i].setBackground (Color.GREEN);
            }
            else if (count < 8)
            {
                jbArray[i].setBackground (Color.YELLOW);
            }
            count++;
        }
    }
}

【问题讨论】:

  • 还有一个removeActionListener方法为JButton(其实为AbstractButton
  • “我如何让 JButton 只能点击一次” 当它被点击时,调用button.setEnabled(false); 这是一个比@MichaelButscher 提出的更好的解决方案——他的方法不会向用户提供提示,用户可能会不断重复激活一个按钮,不明白为什么它“坏”了。顺便说一句 - 如果这不能解决问题,请发布 minimal reproducible example 让我们更好地了解它应该如何工作。

标签: java swing user-interface jbutton


【解决方案1】:

看起来您有一组按钮。您将需要某种方式来跟踪单击了哪个 jButton。您可以创建另一个名为 clicked[] 的数组,并存储单击了哪个按钮。然后,您可以遍历数组以查看单击的数字是否与当前按钮匹配。如果它不在您的第二个列表中,请运行您的颜色更改代码,然后将其添加到 clicked[] 数组中。 这只是一个例子,当然还有其他方法,但想法是跟踪已单击的内容,并且仅在显示未单击按钮时才执行换色器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多