ColorPicker中的自定义调色板

时间:2015-03-27 11:31:59

标签: java javafx javafx-8 color-picker color-palette

我想更改调色板。默认情况下,颜色的透明度为30%。

enter image description here

是否可以替换调色板?

1 个答案:

答案 0 :(得分:3)

根据此solution,您可以在获得矩形及其颜色后替换调色板。

例如,您可以使所有调色板更亮:

    @Override
public void start(Stage primaryStage) {
    ColorPicker picker = new ColorPicker();
    StackPane root = new StackPane(picker);
    Scene scene = new Scene(root, 500, 400);

    primaryStage.setScene(scene);
    primaryStage.show();
    picker.showingProperty().addListener((obs,b,b1)->{
        if(b1){
            PopupWindow popupWindow = getPopupWindow();
            Node popup = popupWindow.getScene().getRoot().getChildrenUnmodifiable().get(0);
            popup.lookupAll(".color-rect").stream()
                .forEach(rect->{
                    Color c = (Color)((Rectangle)rect).getFill();
                    // Replace with your custom color  
                    ((Rectangle)rect).setFill(c.brighter());
                });
        }
    });
}

private PopupWindow getPopupWindow() {
    @SuppressWarnings("deprecation") 
    final Iterator<Window> windows = Window.impl_getWindows();
    while (windows.hasNext()) {
        final Window window = windows.next();
        if (window instanceof PopupWindow) {
            return (PopupWindow)window;
        }
    }
    return null;
}

color picker