You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaFX:点击Rectangle打开Color Picker对话框并获取选中颜色

解决方案(JavaFX场景)
  • 核心思路:创建一个隐藏的ColorPicker实例,通过Rectangle的点击事件触发它的弹窗,监听颜色选中事件获取结果,完全不需要在界面上显示ColorPicker组件。
  • 代码示例:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ColorPicker;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class RectangleColorPickerDemo extends Application {
    @Override
    public void start(Stage primaryStage) {
        Rectangle colorTriggerRect = new Rectangle(200, 100, Color.LIGHTGRAY);
        colorTriggerRect.setStroke(Color.BLACK);
        // 创建隐藏的ColorPicker
        ColorPicker hiddenColorPicker = new ColorPicker();
        hiddenColorPicker.setVisible(false);

        // 绑定Rectangle的点击事件到ColorPicker弹窗
        colorTriggerRect.setOnMouseClicked(e -> {
            // 触发颜色选择弹窗
            hiddenColorPicker.show();
        });

        // 监听选中的颜色,处理结果
        hiddenColorPicker.valueProperty().addListener((obs, oldColor, newColor) -> {
            if (newColor != null) {
                // 将选中的颜色应用到Rectangle(示例操作)
                colorTriggerRect.setFill(newColor);
                // 这里可以把newColor作为输出做其他处理
                System.out.println("选中的颜色: " + newColor);
            }
        });

        StackPane root = new StackPane(colorTriggerRect, hiddenColorPicker);
        Scene scene = new Scene(root, 300, 200);
        primaryStage.setTitle("Rectangle触发颜色选择");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
  • 关键说明:
    • hiddenColorPicker.setVisible(false) 确保组件不在界面上显示
    • 调用hiddenColorPicker.show()直接触发颜色选择弹窗
    • 通过valueProperty()的监听器实时获取用户选中的颜色,无需额外处理弹窗关闭事件

内容的提问来源于stack exchange,提问作者vperse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 00:52:04