【问题标题】:Custom palette in the ColorPickerColorPicker 中的自定义调色板
【发布时间】:2015-05-31 17:21:54
【问题描述】:

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

是否可以更换调色板?

【问题讨论】:

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


    【解决方案1】:

    基于此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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-28
      • 2019-04-07
      • 1970-01-01
      • 2021-01-08
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多