您好,我的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()方法可以完成自定义绘制。然后,将面板添加到小程序。