Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JRadioButton itemlistener未启动_Java_Swing_Jcombobox_Jradiobutton - Fatal编程技术网

Java JRadioButton itemlistener未启动

Java JRadioButton itemlistener未启动,java,swing,jcombobox,jradiobutton,Java,Swing,Jcombobox,Jradiobutton,您好,我的Japplet正在使用一个JComboBox和5个JRadioButtons在小程序上绘制。目前,除了我的JRadioButtons之外,其他一切都可以正常工作。当选择按钮时,我的JRadioButtons不会调用itemStateChanged()。所以在小程序上,我可以点击一个按钮,但它不会启动。我的组合框也使用了itemlistener界面,它可以工作,但无论我尝试了什么,我都无法获得发送信息/点火的按钮 我注意到需要点击两下才能选择一个按钮,希望这里面有问题 这是一个家庭作业问

您好,我的Japplet正在使用一个JComboBox和5个JRadioButtons在小程序上绘制。目前,除了我的JRadioButtons之外,其他一切都可以正常工作。当选择按钮时,我的JRadioButtons不会调用itemStateChanged()。所以在小程序上,我可以点击一个按钮,但它不会启动。我的组合框也使用了itemlistener界面,它可以工作,但无论我尝试了什么,我都无法获得发送信息/点火的按钮

我注意到需要点击两下才能选择一个按钮,希望这里面有问题

这是一个家庭作业问题,如果我可以使用actionperformed和actionlistener,我会:(.我需要使用itemlistener。下面是我如何调用单选按钮、将它们添加到形状按钮组以及将按钮添加到容器c的示例

谢谢你的帮助


很抱歉读到这篇文章,但因为这是家庭作业,我不能100%确定我能保持代码正常运行,如果您需要帮助理解它,请PM我!

一般来说,为这么多侦听器使用小程序类是个坏主意。这只会增加混乱,而且您现在有一个处理太多事件的God对象。有关更多信息,请参阅本讨论:

第二个问题是,您将java.awt和javax.swing对象严重混合在一起,这两个对象放在同一个容器中会导致问题。您一定要尝试将小程序拆分为两个JPanel,一个用于awt内容(绘画、形状等),另一个用于swing内容(按钮、框等)


您似乎正确地使用了ItemListener类,但当我看到需要单击两下才能选择一个按钮时,这是awt/swing混合/绘制问题的明显迹象。

您发布的代码不是SSCCE

您的问题是关于ItemListener的,那么为什么您发布了与MouseListener和MouseMotionListener相关的代码?自定义绘制代码与您的问题有什么关系

您如何知道没有调用ItemListener代码?您是否向listener代码添加了System.out.println(…)语句?请先使用“appletviewer”测试代码。这比使用浏览器更简单。从命令行执行以下操作:

appletviewer P6.html

或者,我发现在不创建HTML文件的情况下测试小程序更容易。您可以将以下代码行添加到源文件的顶部:

// <applet code="P6.class" width="800" height="600"></applet>
应该是:

jrbOval = new JRadioButton("Oval");    

另外,您不应该覆盖JApplet的paint()方法。自定义绘制是通过覆盖JPanel的paintComponent()方法完成的。然后您将面板添加到小程序中。

您发布的代码对我们没有帮助。我建议您阅读JRadioButton API,并按照Swing教程“如何使用单选按钮”的链接进行操作您将在此处找到一个工作示例。如果您仍然需要帮助,请发布您的SSCCE()这就说明了问题所在。几乎每个在线指南都说要使用一个我不允许使用的actionlistener。我的问题是不知道如何使用它,甚至不理解为什么我的ItemListener按钮在选中时没有触发itemstatechanged。此外,我还有一个调试计数器eventfire,即使我单击该按钮,它的读数也为0s 100次。另外,我在原始帖子中添加了代码。谢谢。这正是我一直在寻找的东西。我没有时间实施更改,但我会在明天之前让你知道它是否有效。这会造成“混乱”吗还导致JRadioButtons不激活itemStateChanged?自我提醒:已达到每日投票限制。当允许再次投票时,向上投票回复。@Howard混淆本身并不是错误——大量混淆的代码仍然可以工作。但现在它不起作用,而且您的代码可读性低,使我们无法实际操作我保证,如果你重写并组织你的课程,但它仍然不起作用,我们至少能够在一秒钟内找出问题所在。对不起,我以为SSCCE的要求之一是能够立即复制和粘贴并使用它。但无论如何,你的答案是正确的,这就是问题所在。谢谢你或者帮助!@Howard Ho,是的,这是一个要求,但只适用于专门演示问题的代码。鼠标听写器导致问题了吗?不,所以不应该包括它。调试20行代码比调试100行代码更容易。简化代码是你的工作。
jrbOval = new JRadioButton("Oval");