您好,我的Japplet使用一个JComboBox和5个JRadioButton在该applet上进行绘制和绘制。当前,除了我的JRadioButtons之外,其他所有东西都可以正常工作,当选择一个按钮时,它不会调用itemStateChanged()。因此,在小程序上,我可以单击一个按钮,但不会触发。我的组合框也使用itemlistener界面,它可以工作,但是无论我尝试了什么,我都无法获得发送信息/触发信息的按钮。

我注意到需要两次单击才能选择一个按钮,并希望问题出在其中。

这是一个家庭作业问题,如果我可以使用actionperformed和actionlistener,我会:(。容器c。

谢谢你的帮助!

抱歉,任何人都读这本书,但是因为这是家庭作业,所以我不是100%肯定我可以保留代码,如果需要帮助,请PM我理解!

最佳答案

您发布的代码不是SSCCE!

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

您如何知道未调用ItemListener代码?您是否在侦听器代码中添加了System.out.println(...)语句?首先使用“ appletviewer”测试您的代码。它比使用浏览器容易。在命令行中,您要做的是:

appletviewer P6.html

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

// <applet code="P6.class" width="800" height="600"></applet>


现在,您可以从命令中使用以下命令测试小程序:

appletviewer P6.java

代码的问题是单选按钮同时定义为类和局部变量。 ItemListener会生成NullPointerException,因为类变量为null。

JRadioButton jrbOval = new JRadioButton("Oval");


应该:

jrbOval = new JRadioButton("Oval");


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

10-07 18:48