标签上的 ControlsFx 装饰

ControlsFx Decoration on a Label

我想在 TableCell 中应用 ControlsFx 装饰,因此想将它们应用到 Label。

以下不对标签应用装饰。应该吗?

import org.controlsfx.control.decoration.Decorator;
import org.controlsfx.control.decoration.GraphicDecoration;
import org.controlsfx.validation.decoration.GraphicValidationDecoration;

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;

public class LabelDecoration extends Application {

    private static final Image REQUIRED_IMAGE = new Image(GraphicValidationDecoration.class.getResource("/impl/org/controlsfx/control/validation/required-indicator.png").toExternalForm()); //$NON-NLS-1$

    @Override
    public void start(Stage primaryStage) throws Exception {

        Label label = new Label("Test");

        Node requiredDecoration = new ImageView( REQUIRED_IMAGE );
        Decorator.addDecoration( label, new GraphicDecoration( requiredDecoration, Pos.TOP_LEFT ));

        primaryStage.setScene( new Scene( label, 100, 100 ));   
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch( args );
    }

}

Decorator 尝试将 DecorationPane 安装到场景中,这在您的情况下尚不存在。

将行 Decorator.addDecoration(...) 换成 Platform.runLater(...)它将起作用。