В таблице стилей по умолчанию цвет текста в метке установлен на искомый цвет, называемый -fx-text-background-color
(это равно цвету текста переднего плана, несмотря на то, чтоимя), которое, в свою очередь, зависит от искомого цвета -fx-background
(отсюда и название ...).Значение -fx-background
обычно наследуется от родителя;идея здесь в том, что он использует цвет, который контрастирует с фоном.Значение определяется как
-fx-text-background-color: ladder(
-fx-background,
-fx-light-text-color 45%,
-fx-dark-text-color 46%,
-fx-dark-text-color 59%,
-fx-mid-text-color 60%
);
Таким образом, вы можете сделать текст похожим на метку, используя тот же CSS-цвет для поиска для свойства -fx-fill
текста.Вот очень быстрая и грязная демонстрация:
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class TextColor extends Application {
@Override
public void start(Stage primaryStage) {
Label plainLabel = new Label("A plain label");
Text styledText = new Text("Styled text");
styledText.setStyle("-fx-fill: -fx-text-background-color;");
Text plainText = new Text("A plain text");
VBox root = new VBox(10, plainLabel, styledText, plainText);
root.setPadding(new Insets(10));
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
, которая дает
Это также заставляет Text
реагировать соответствующим образомк изменениям на заднем плане.Если вы добавите
root.setStyle("-fx-background: black;");
, то стилизованный текст (и метка по умолчанию) будет отвечать:
Обратите внимание, чтодля вашего варианта использования для Text
комбинация
label.setPrefWidth(...);
label.setWrapText(true);
позволит вам контролировать ширину обертки этикетки и может быть более естественным решением для того, что вы пытаетесь сделать, чем подходВы предлагаете здесь.