Index: javax/swing/plaf/basic/BasicMenuItemUI.java =================================================================== RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicMenuItemUI.java,v retrieving revision 1.30 diff -u -r1.30 BasicMenuItemUI.java --- javax/swing/plaf/basic/BasicMenuItemUI.java 18 Oct 2005 22:10:32 -0000 1.30 +++ javax/swing/plaf/basic/BasicMenuItemUI.java 20 Oct 2005 18:36:33 -0000 @@ -50,10 +50,13 @@ import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import java.util.ArrayList; import javax.swing.ButtonModel; import javax.swing.Icon; +import javax.swing.JCheckBoxMenuItem; import javax.swing.JComponent; import javax.swing.JMenu; import javax.swing.JMenuItem; @@ -161,6 +164,11 @@ * PropertyChangeListener to listen for property changes in the menu item */ private PropertyChangeListener propertyChangeListener; + + /** + * ItemListener to listen for item changes in the menu item + */ + private ItemListener itemListener; /** * Number of spaces between accelerator and menu item's label. @@ -181,6 +189,7 @@ menuDragMouseListener = createMenuDragMouseListener(menuItem); menuKeyListener = createMenuKeyListener(menuItem); propertyChangeListener = new PropertyChangeHandler(); + itemListener = new ItemHandler(); } /** @@ -431,6 +440,7 @@ menuItem.addMenuDragMouseListener(menuDragMouseListener); menuItem.addMenuKeyListener(menuKeyListener); menuItem.addPropertyChangeListener(propertyChangeListener); + menuItem.addItemListener(itemListener); } /** @@ -719,6 +729,7 @@ menuItem.removeMenuDragMouseListener(menuDragMouseListener); menuItem.removeMenuKeyListener(menuKeyListener); menuItem.removePropertyChangeListener(propertyChangeListener); + menuItem.removeItemListener(itemListener); } /** @@ -949,7 +960,7 @@ /** * This class handles mouse dragged events. */ - protected class MenuDragMouseHandler implements MenuDragMouseListener + private class MenuDragMouseHandler implements MenuDragMouseListener { /** * Tbis method is invoked when mouse is dragged over the menu item. @@ -1010,7 +1021,7 @@ * This class handles key events occuring when menu item is visible on the * screen. */ - protected class MenuKeyHandler implements MenuKeyListener + private class MenuKeyHandler implements MenuKeyListener { /** * This method is invoked when key has been pressed @@ -1051,7 +1062,7 @@ * Helper class that listens for changes to the properties of the address@hidden * JMenuItem}. */ - protected class PropertyChangeHandler implements PropertyChangeListener + private class PropertyChangeHandler implements PropertyChangeListener { /** * This method is called when one of the menu item's properties change. @@ -1060,6 +1071,31 @@ */ public void propertyChange(PropertyChangeEvent evt) { + menuItem.revalidate(); + menuItem.repaint(); + } + } + + /** + * Helper class that listens for item changes to the properties of the address@hidden + * JMenuItem}. + */ + private class ItemHandler implements ItemListener + { + /** + * This method is called when one of the menu item changes. + * + * @param evt A address@hidden ItemEvent}. + */ + public void itemStateChanged(ItemEvent evt) + { + boolean state = false; + if (menuItem instanceof JCheckBoxMenuItem) + { + if (evt.getStateChange() == ItemEvent.SELECTED) + state = true; + ((JCheckBoxMenuItem) menuItem).setState(state); + } menuItem.revalidate(); menuItem.repaint(); }