Class CompoundFocusListener


  • public class CompoundFocusListener
    extends AbstractBean
    An convenience class which maps focusEvents received from a container hierarchy to a bound read-only property. Registered PropertyChangeListeners are notified if the focus is transfered into/out of the hierarchy of a given root.

    F.i, client code which wants to get notified if focus enters/exits the hierarchy below panel would install the compound focus listener like:

     
             // add some components inside
             panel.add(new JTextField("something to .... focus"));
             panel.add(new JXDatePicker(new Date()));
             JComboBox combo = new JComboBox(new Object[] {"dooooooooo", 1, 2, 3, 4 });
             combo.setEditable(true);
             panel.add(new JButton("something else to ... focus"));
             panel.add(combo);
             panel.setBorder(new TitledBorder("has focus dispatcher"));
             // register the compound dispatcher
             CompoundFocusListener report = new CompoundFocusListener(panel);
             PropertyChangeListener l = new PropertyChangeListener() {
     
                 public void propertyChange(PropertyChangeEvent evt) {
                     // do something useful here
                     
                 }};
             report.addPropertyChangeListener(l);    
             
     
     
    PENDING JW: change of current instance of KeyboardFocusManager?
    • Constructor Detail

      • CompoundFocusListener

        public CompoundFocusListener​(JComponent root)
        Instantiates a CompoundFocusListener on the component hierarchy below the given component.
        Parameters:
        root - the root of a component hierarchy
        Throws:
        NullPointerException - if the root is null
    • Method Detail

      • isFocused

        public boolean isFocused()
        Return true if the root or any of its descendants is focused. This is a read-only bound property, that is property change event is fired if focus is transfered into/out of root's hierarchy.
        Returns:
        a boolean indicating whether or not any component in the container hierarchy below root is permanent focus owner.
      • release

        public void release()
        Releases all listeners and internal references.

        Note: this instance must not be used after calling this method.

      • permanentFocusOwnerChanged

        protected void permanentFocusOwnerChanged​(Component focusOwner)
        Updates focused property depending on whether or not the given component is below the root's hierarchy.

        Note: Does nothing if the component is null. This might not be entirely correct, but property change events from the focus manager come in pairs, with only one of the new/old value not-null.

        Parameters:
        focusOwner - the component with is the current focusOwner.