# 如何编写项目监听器 > 原文: [https://docs.oracle.com/javase/tutorial/uiswing/events/itemlistener.html](https://docs.oracle.com/javase/tutorial/uiswing/events/itemlistener.html) 项目事件由实现 [`ItemSelectable`](https://docs.oracle.com/javase/8/docs/api/java/awt/ItemSelectable.html) 接口的组件触发。通常,`ItemSelectable`组件保持一个或多个项目的开/关状态。触发项目事件的 Swing 组件包括[复选框](../components/button.html#checkbox),[检查菜单项](../components/menu.html),[切换按钮](../components/button.html)等按钮,以及[组合框](../components/combobox.html) 。 以下是 [`ComponentEventDemo.java`](../examples/events/ComponentEventDemoProject/src/events/ComponentEventDemo.java) 中的一些项目事件处理代码: ```java //where initialization occurs checkbox.addItemListener(this); ... public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { label.setVisible(true); ... } else { label.setVisible(false); } } ``` _ 因为`ItemListener`只有一个方法,所以它没有相应的适配器类。_ | 方法 | 目的 | | :-- | :-- | | [itemStateChanged(ItemEvent)](https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemListener.html#itemStateChanged-java.awt.event.ItemEvent-) | 在收听组件的状态更改之后调用。 | | 方法 | 目的 | | :-- | :-- | | [Object getItem()](https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemEvent.html#getItem--) | 返回与状态更改的项关联的特定于组件的对象。通常这是包含所选项目上的文本的`String`。 | | [ItemSelectable getItemSelectable()](https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemEvent.html#getItemSelectable--) | 返回触发 item 事件的组件。您可以使用它而不是`getSource`方法。 | | [int getStateChange()](https://docs.oracle.com/javase/8/docs/api/java/awt/event/ItemEvent.html#getStateChange--) | 返回项的新状态。 `ItemEvent`类定义了两种状态:`SELECTED`和`DESELECTED`。 | 下表列出了一些使用项监听器的示例。 | 例 | 在哪里描述 | 笔记 | | :-- | :-- | :-- | | [`ComponentEventDemo`](../examples/events/index.html#ComponentEventDemo) | 本节和[如何编写组件监听器](componentlistener.html) | 在复选框上侦听项目事件,该复选框确定标签是否可见。 | | [`CheckBoxDemo`](../examples/components/index.html#CheckBoxDemo) | [如何使用复选框](../components/button.html#checkbox) | 四个复选框共享一个项目监听器,它使用`getItemSelected`来确定触发事件的复选框。 | | [`MenuDemo`](../examples/components/index.html#MenuDemo) | [如何使用菜单](../components/menu.html) | 在复选框菜单项上侦听项目事件。 | | [`MenuDemo`](../examples/components/index.html#ScrollDemo) | [如何使用滚动窗格](../components/scrollpane.html) | 在切换按钮上收听项目事件。 |