67

What is the difference between javafx.scene.text.Text and javafx.scene.control.Label?

The documentation says:

  • Label is a non-editable text control.
  • The Text class defines a node that displays a text.

But the Label class has a method "setText" and "textProperty", therefore is editable.

Marlord
  • 1,144
  • 2
  • 13
  • 24
  • 11
    non-editable in this context means you can't edit it on screen, it doesn't mean you can't edit it programmatically. – Harry Blargle Jun 23 '14 at 20:42
  • 1
    One difference is the position in a group. When you add a Text it is placed above the group and Label is placed inside... – Marlord Jun 24 '14 at 00:23

3 Answers3

88

As Harry Blargle pointed out, "non-editable" means "not editable by the user." So both Label and Text are non-editable.

Label and Text have different CSS properties. Label inherits from Labeled, Control, and Region, which means it inherits a great many styleable properties which Text doesn't have. A Label can have alignment, a graphic, a background, a border, a displayed keyboard mnemonic, built-in wrapping, and can be intelligently clipped with an ellipsis ("…").

Text can participate in a TextFlow. (Technically, Label can also, but it is treated as just another embedded control and is not laid out as text.)

In general, if you want to show the purpose of an input control by placing one or more words next to it, and/or you want to allow direct keyboard navigation to an input control, you use a Label. If you want to display text content not associated with input, you use Text.

VGR
  • 40,506
  • 4
  • 48
  • 63
17

A Text is a geometric shape (like a Rectangle or a Circle), while Label is a UI control (like a Button or a CheckBox).

In Swing, geometric shapes were restricted to the painting mechanism, while in JavaFX they can be used in more generic ways.

Jan Bodnar
  • 10,969
  • 6
  • 68
  • 77
-1

Labels

  • A label displays text or image which the user cannot directly change or edit . *specify the image for the label.

TextFields

  • A TextField displays text or image which the user can directly change or edit ..
  • don't specify image for the text field