【问题标题】:Java Radio Button anomalyJava 单选按钮异常
【发布时间】:2011-04-29 17:31:17
【问题描述】:

我正在编写一个 Java 应用程序,我有四个单选按钮,分别称为 rb1、rb2、rb3 和 rb4。我已将其中两个添加到一个单选按钮组,另外两个添加到第二个单选按钮组。然后我将它们全部添加到一个面板中。为所有四个按钮定义了不同的动作侦听器。

但是,当我单击一组中的第一个按钮时,它会触发自己的动作侦听器,而另一组中的第二个按钮则触发它。当我点击那个错误触发的按钮时,它根本不会触发。

我只能怀疑它们不应该都在一个面板中,但这似乎有点紧张作为解释。有什么想法吗?

提前感谢您的帮助。

约翰·多纳

【问题讨论】:

  • 您可能需要显示一些代码。我想不出为什么将它们全部添加到一个面板会导致这个问题。
  • 我在同一个容器中放置了多个按钮组。我怀疑你搞砸了添加动作侦听器,并且“另一个组中的第二个按钮的一个”实际上附加到同一组中的一个。请记住,当您单击单选按钮时,您将获得两个动作侦听器事件,一个在被选中的按钮上,另一个在被取消选择的按钮上。
  • 一个代码可能很好......我无法重现我的错误!
  • @John 尝试提供一个示例以澄清您的问题,但我同意您在解释后以某种方式混合了听众的动作或收音机按钮!
  • 按照您的解释方式,听起来您将实际按钮添加到了 JPanel。确保您将单选按钮组添加到面板,而不是单个按钮。

标签: java radio-button


【解决方案1】:

将几组单选按钮放在同一个面板中是非常好的。

仔细检查您的听众。检查 listener4 是否实际添加到 rb4。您实际上可能已经这样做了:

rb1.addActionListener(listener1);
rb2.addActionListener(listener2);
rb3.addActionListener(listener3);
rb1.addActionListener(listener4);  // NOTE: listener added to rb1 instead of rb4

如果是这样的话,那么:

  • 点击 rb1 会触发 listener1 和 listener4
  • 单击 rb4 不会执行任何操作(没有附加侦听器)

这似乎符合您的症状。

【讨论】:

  • 你是对的!令人惊讶的是,有多少次我可以查看自己的代码并错过一个明显的错误!谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-10
  • 2023-04-03
  • 2016-07-17
  • 1970-01-01
  • 2010-12-09
相关资源
最近更新 更多