当前位置: 首页 > 面试题库 >

在Java中将项目动态添加到项目时,如何避免触发JComboBox的actionlistener事件?

闻人飞白
2023-03-14
问题内容

对于以下任务,我需要您的建议和指导。

我有一个包含两个JComboBox的框架,假设它们分别命名为combo1和combo2,一个JTable和其他组件

在初始阶段,当上述组件可见框架时。combo1组合框填充了一些值,但在初始阶段未选择任何值,combo2组合框被禁用并且表为空。

我在combo1和combo2上添加了一个actionListener。combo1中有两种类型的值,假设这些值是type1和type2。

条件1:当我们从Combo1中选择值type1时,将调用combo1的actionListener方法,该方法将调用一个方法,该方法使combo2保持禁用状态,并向表中添加一些与combo1中选定值type1相关的行。

条件2:当我们从combo1中选择值type2时,将调用combo1的actionListener方法,该方法将调用一个方法,该方法使combo2填充一些与type2相关的值并被启用,但未从combo2中选择任何值,并且表也应保持为空,直到我们选择来自combo2的任何值。

在向combo2每次添加值时,都会触发table,从而触发combo2的动作侦听器方法。在combo2的actionListener方法中,该方法获取combo2选定的值,但此处没有combo2的选定值,该值导致NullPointerException。

因此,我应该怎么做,将值添加到combo2后,combo2的动作列表方法将不会执行。


问题答案:

您可以在添加新元素之前删除动作侦听器,并在完成后将其添加回去。Swing是单线程的,因此无需担心其他线程需要触发侦听器。

您的听众可能还会检查是否选择了某些内容,否则请采取适当的措施。比获得NPE好。



 类似资料:
  • 问题内容: 我将此组合框添加到面板中。如果直接在数据库中添加一些项目,则希望那些新添加的项目显示在组合框中。 我可以在调试时看到这些值,但是这些值不会出现在我的组合框中。 如何在不关闭面板的情况下将那些新添加的值放入组合框? 问题答案: 如何使用ComboBoxModel?像这样…

  • 问题内容: 我设法下载了Eclipse Helios的svn插件。然后,我设法将一个新的存储库添加到我选择的驱动器中。但是我看不到如何知道已经创建的项目?有人可以告诉我我该怎么做。 谢谢 问题答案: 就像是: 右键单击您的项目。 选择团队->共享项目。 该向导将指导您进行初始导入。 实际上,Initial Import不会将任何代码放入项目存储库中,而只是将项目详细信息放入仓库中。因此,您需要执行

  • 我是gradle的新手,我现有的大多数项目都在ant(netbeans项目)中。 我必须为我想重用的每个项目创建gradle项目吗? 我可以在gradle项目中直接声明现有的netbean项目为依赖项吗?如果是,如何? 谢谢。

  • 我有以下项目:https://github.com/glusk2/sprouts 我尝试将添加到根目录文件中的整个项目中,如下所示:

  • 在Eclipse中,我创建了RCP插件项目。 我还创建了简单的java项目。 我添加了简单的java项目来构建RCP项目的路径。 因此,我能够在RCP中导入和编译代码,但当我启动RCP应用程序时,在到达使用添加的java项目的代码时,我会遇到异常: 如何解决这个问题(无需创建java项目的jar并将其作为库添加到rcp项目中)?

  • 问题内容: 所以,我想要的是选择一个项目时要运行的另一段代码。但是我的问题是,如何对特定项目实施? 这是我的代码: 我该怎么做才能添加到“车辆”,“自行车/自行车”,“船”,“房屋”,“企业”,“对象”,“工作”,“等级”和“许可证”项中? 问题答案: 如果您希望在选择更改时发生某些事情,则不希望使用MouseListener,而希望使用。它不仅是正确的抽象,而且请记住,不使用鼠标就可以更改选择。