< prev index next >

modules/controls/src/main/java/javafx/scene/control/Label.java

Print this page




  85     }
  86 
  87     private void initialize() {
  88         getStyleClass().setAll("label");
  89         setAccessibleRole(AccessibleRole.TEXT);
  90         // Labels are not focus traversable, unlike most other UI Controls.
  91         // focusTraversable is styleable through css. Calling setFocusTraversable
  92         // makes it look to css like the user set the value and css will not
  93         // override. Initializing focusTraversable by calling set on the
  94         // CssMetaData ensures that css will be able to override the value.
  95         ((StyleableProperty<Boolean>)(WritableValue<Boolean>)focusTraversableProperty()).applyStyle(null, Boolean.FALSE);
  96     }
  97 
  98     /***************************************************************************
  99      *                                                                         *
 100      * Properties                                                              *
 101      *                                                                         *
 102      **************************************************************************/
 103 
 104     private ChangeListener<Boolean> mnemonicStateListener = (observable, oldValue, newValue) -> {
 105         Label.this.impl_showMnemonicsProperty().setValue(newValue);
 106     };
 107 
 108     /**
 109      * A Label can act as a label for a different Control or
 110      * Node. This is used for Mnemonics and Accelerator parsing.
 111      * This allows setting of the target Node.
 112      */
 113     public ObjectProperty<Node> labelForProperty() {
 114         if (labelFor == null) {
 115             labelFor = new ObjectPropertyBase<Node>() {
 116                 Node oldValue = null;
 117                 @Override protected void invalidated() {
 118                     if (oldValue != null) {
 119                         NodeHelper.getNodeAccessor().setLabeledBy(oldValue, null);
 120                         oldValue.impl_showMnemonicsProperty().removeListener(mnemonicStateListener);
 121                     }
 122                     final Node node = get();
 123                     if (node != null) {
 124                         NodeHelper.getNodeAccessor().setLabeledBy(node, Label.this);
 125                         node.impl_showMnemonicsProperty().addListener(mnemonicStateListener);
 126                         impl_setShowMnemonics(node.impl_isShowMnemonics());
 127                     } else {
 128                         impl_setShowMnemonics(false);
 129                     }
 130                     oldValue = node;
 131                 }
 132 
 133                 @Override public Object getBean() {
 134                     return Label.this;
 135                 }
 136 
 137                 @Override public String getName() {
 138                     return "labelFor";
 139                 }
 140             };
 141 
 142         }
 143         return labelFor;
 144     }
 145     private ObjectProperty<Node> labelFor;
 146 
 147     public final void setLabelFor(Node value) { labelForProperty().setValue(value); }
 148     public final Node getLabelFor() { return labelFor == null ? null : labelFor.getValue(); }




  85     }
  86 
  87     private void initialize() {
  88         getStyleClass().setAll("label");
  89         setAccessibleRole(AccessibleRole.TEXT);
  90         // Labels are not focus traversable, unlike most other UI Controls.
  91         // focusTraversable is styleable through css. Calling setFocusTraversable
  92         // makes it look to css like the user set the value and css will not
  93         // override. Initializing focusTraversable by calling set on the
  94         // CssMetaData ensures that css will be able to override the value.
  95         ((StyleableProperty<Boolean>)(WritableValue<Boolean>)focusTraversableProperty()).applyStyle(null, Boolean.FALSE);
  96     }
  97 
  98     /***************************************************************************
  99      *                                                                         *
 100      * Properties                                                              *
 101      *                                                                         *
 102      **************************************************************************/
 103 
 104     private ChangeListener<Boolean> mnemonicStateListener = (observable, oldValue, newValue) -> {
 105         NodeHelper.showMnemonicsProperty(Label.this).setValue(newValue);
 106     };
 107 
 108     /**
 109      * A Label can act as a label for a different Control or
 110      * Node. This is used for Mnemonics and Accelerator parsing.
 111      * This allows setting of the target Node.
 112      */
 113     public ObjectProperty<Node> labelForProperty() {
 114         if (labelFor == null) {
 115             labelFor = new ObjectPropertyBase<Node>() {
 116                 Node oldValue = null;
 117                 @Override protected void invalidated() {
 118                     if (oldValue != null) {
 119                         NodeHelper.getNodeAccessor().setLabeledBy(oldValue, null);
 120                         NodeHelper.showMnemonicsProperty(oldValue).removeListener(mnemonicStateListener);
 121                     }
 122                     final Node node = get();
 123                     if (node != null) {
 124                         NodeHelper.getNodeAccessor().setLabeledBy(node, Label.this);
 125                         NodeHelper.showMnemonicsProperty(node).addListener(mnemonicStateListener);
 126                         NodeHelper.setShowMnemonics(Label.this, NodeHelper.isShowMnemonics(node));
 127                     } else {
 128                         NodeHelper.setShowMnemonics(Label.this, false);
 129                     }
 130                     oldValue = node;
 131                 }
 132 
 133                 @Override public Object getBean() {
 134                     return Label.this;
 135                 }
 136 
 137                 @Override public String getName() {
 138                     return "labelFor";
 139                 }
 140             };
 141 
 142         }
 143         return labelFor;
 144     }
 145     private ObjectProperty<Node> labelFor;
 146 
 147     public final void setLabelFor(Node value) { labelForProperty().setValue(value); }
 148     public final Node getLabelFor() { return labelFor == null ? null : labelFor.getValue(); }


< prev index next >