1

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

以下内容不适用于标签的装饰。应该是?

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 );
    }

}
4

1 回答 1

2

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

将Decorator.addDecoration(...)行包裹在Platform.runLater(...)中,它将起作用。

于 2016-04-25T06:40:36.100 回答