原文链接:DOC-03-25 颜色选择器(Color Picker) | JavaFX中文资料

ColorPicker控件,提供了它的设计概述,并且说明了如何在你的JavaFX应用程序中使用它。

JavaFX SDK中的ColorPicker控件是一种典型的用户界面组件,它允许用户在一个可用范围内选择一个特定的颜色,或者通过指定RGB或HSB的组合值来设置一种新的颜色

设计概述

ColorPicker控件由颜色选择器,调色板和自定义颜色对话框窗体组成

ColorPicker控件的元素

另一种定义一个新颜色的办法就是设置HSB (色相/饱和度/亮度)或RGB (红/绿/蓝)值 ,也可以明确地输入网页颜色值到对应的文本框中

用户也可以通过移动Opacity滑块或者输入0到100之间的值来设置自定义颜色的透明度。在完成了所有的设置并且新颜色被指定完毕后,用户可以点击Use按钮来应用它,或者点击Save按钮将新的颜色保存到自定义颜色区域

使用ColorPicker

使用JavaFX SDK中的ColorPicker类来在JavaFX应用程序中创建一个ColorPicker。你可以直接添加一个ColorPicker到应用程序的scene中,或者布局容器中,或者应用程序工具栏中

创建ColorPicker对象的方法

//空构造函数,控件默认显示为白色

ColorPicker colorPicker1 = new ColorPicker();

//当前选择颜色参数为Color实例

ColorPicker colorPicker2 = new ColorPicker(Color.BLUE);

//当前选中颜色参数为网页颜色

ColorPicker colorPicker3 = new ColorPicker(Color.web("#ffcce6"));

import javafx.application.Application;
import javafx.event.*;
import javafx.scene.Scene;
import javafx.scene.control.ColorPicker;
import javafx.geometry.Insets;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.scene.text.*;
import javafx.stage.Stage;public class ColorPickerSample extends Application {public static void main(String[] args) {launch(args);}@Overridepublic void start(Stage stage) {stage.setTitle("ColorPicker组件示例");Scene scene = new Scene(new HBox(20), 400, 100);//创建一个场景对象HBox box = (HBox) scene.getRoot();//创建一个水平盒子对象box.setPadding(new Insets(5, 5, 5, 5));//水平盒子呢一个内边距对象final ColorPicker colorPicker = new ColorPicker();//颜色选择器colorPicker.setValue(Color.CORAL);//颜色设置final Text text = new Text("试一试颜色选择器");//创建文本对象text.setFont(Font.font ("Verdana", 20));//文本对象字体大小设置text.setFill(colorPicker.getValue());//文本对象颜色填充,文本对象颜色设置为颜色选择器对象所选的颜色colorPicker.setOnAction((ActionEvent t) -> {//颜色选择器组件交互事件处理回调函数text.setFill(colorPicker.getValue());//设置文本对象的颜色填充为颜色选择器对应选择的当前颜色值});box.getChildren().addAll(colorPicker, text);//水平盒子对象上添加颜色选择器对象和文本对象stage.setScene(scene);//舞台对象stage.show();//舞台展现}
}

此样例创建了一个ColorPicker,并定义了其颜色变化时的行为。通过ColorPicker类的getValue()方法获得的Color对象值被传递给Text对象的setFill()方法。这就是如何将选中的颜色应用到”Try the color picker!”文本之上的过程

——————————————————————

可以将选中的颜色应用到图形Node类型对象上

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ColorPicker;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.scene.control.ComboBox;
import javafx.scene.control.ToolBar;
import javafx.scene.effect.DropShadow;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.SVGPath;
import javafx.stage.Stage;public class ColorPickerTest extends Application {ImageView logo = new ImageView(new Image(getClass().getResourceAsStream("background1.jpg")));//创建并加载一个图片掉图片视图区域对象logo中public static void main(String[] args) {launch(args);}@Overridepublic void start(Stage stage) {stage.setTitle("ColorPicker测试");Scene scene = new Scene(new VBox(20), 300, 300);//创建场景对象挂载垂直布局盒子对象VBox box = (VBox) scene.getRoot(); //获取场景对象上的垂直盒子布局对象ToolBar tb = new ToolBar();//创建工具栏对象box.getChildren().add(tb);//垂直盒子布局对象中添加工具栏ToolBar对象final ComboBox logoSamples = new ComboBox();//创建ComboBox类型对象logoSamples.getItems().addAll("图片1","图片2","图片3","图片4");logoSamples.setValue("图片1");//设置ComboBox类型对象目前选择值为图片1logoSamples.valueProperty().addListener(new ChangeListener<String>() {//ComboBox类型对象选项交互事件监听器对的创建于添加@Overridepublic void changed(ObservableValue ov, String t, String t1) {//ComboBox类型对象事件改变处理函数logo.setImage(new Image(getClass().getResourceAsStream("inbox_16.png")));//将指定图片Image类型对象加载到图片视图区域对象logo中}});final ColorPicker colorPicker = new ColorPicker();//创建一个颜色选择器对象tb.getItems().addAll(logoSamples, colorPicker);//将ToolBar工具栏类型对象上添加ComboBox类型对象和ColorPicker颜色选择器对象StackPane stack = new StackPane();//创建一个栈式面板布局对象box.getChildren().add(stack);//布局盒子对象上添加一个栈式面板布局对象final SVGPath svg = new SVGPath();//创建一个划线路径型SVG类型矢量图形svg.setContent("M70,50 L90,50 L120,90 L150,50 L170,50"+ "L210,90 L180,120 L170,110 L170,200 L70,200 L70,110 L60,120 L30,90"+ "L70,50");//设置一个矢量图形的形成图形的划线轨迹svg.setStroke(Color.DARKGREY);//设置矢量图形的线色svg.setStrokeWidth(2);//设置矢量图形的线宽svg.setEffect(new DropShadow());//设置图形的阴影特效效果svg.setFill(colorPicker.getValue());//将矢量图形上添加颜色选择器所选的颜色stack.getChildren().addAll(svg, logo);//设置堆栈式布局面板对象添加到矢量图形和图形对象colorPicker.setOnAction((ActionEvent t) -> {svg.setFill(colorPicker.getValue());//颜色选择器对象的交互事件处理回调函数,将svg矢量图形填充颜色为颜色选择器对象所选择的颜色});stage.setScene(scene);//舞台对象上设置场景对象stage.show();//舞台对象的展示与展现}
}

在这个样例中,在Color Picker中被选择的颜色通过使用getValue()方法被获取到,并且被应用到了SVGPath对象上

当你使用Color Picker时,你可以通过getCustomColors()方法获取已创建的自定义颜色,它会返回一个包含Color对象的ObservableList,这些Color对象与被创建的颜色对应。你无法在应用程序启动时将它们设置到ColorPicker中。然而你可以将某个自定义颜色设置为ColorPicker的选中颜色值

获取自定义颜色

1

2

ObservableList<Color>customColors = colorPicker.getCustomColors();

colorPicker.setValue(customColors.get(index));

改变Color Picker的外观

Color Picker控件的默认外观是由com.sun.javafx.scene.control.skin.ColorPickerSkin类定义的。为了在你的JavaFX应用程序中给ColorPicker定义其它可选皮肤,你可以重新定义color-picker CSS样式类中的-fx-skin属性,如例25-5所示。

ColorPicker设置一个新皮肤

1

2

3

.color-picker {

-fx-skin: "CustomSkin";

}

在JavaFX代码中使用split-button和arrow-button CSS样式类来修改ColorPicker控件的外观

设置ColorPicker的外观

1

2

3

4

5

//设置split-menu-button

colorPicker.getStyleClass().add("split-button");

//设置button

colorPicker.getStyleClass().add("button");

你也可以通过使用modena样式表中定义的各种CSS样式类来修改ColorPicker的默认风格并自定义它的各个元素。在JavaFX SDK安装目录下的\rt\lib\ext目录中可以看到此文件。使用下面的命令将样式表从JAR文件中提取出来:jar -xf jfxrt.jar com/sun/javafx/scene/control/skin/modena/modena.css。请查看”在JavaFX应用中使用CSS样式来管理外观”了解更多关于CSS样式类和属性的信息。修改ColorPicker的默认背景和标签。

 修改ColorPicker的默认外观

1

2

3

4

5

6

7

8

.color-picker {

-fx-background-color: #669999;

-fx-background-radius: 0 15 15 0;

}

.color-picker .color-picker-label .text {

-fx-fill: #ccffcc;

}

将这些样式添加到ControlStyle.css文件中,并通过以下代码行在JavaFX应用程序中启用样式表:scene.getStylesheets().add(“colorpickersample/ControlStyle.css”);,然后编译和运行ColorPickerSample。Color Picker外观应该产生如图所示的改变。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ColorPicker;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.scene.control.ComboBox;
import javafx.scene.control.ToolBar;
import javafx.scene.effect.DropShadow;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.SVGPath;
import javafx.stage.Stage;public class ColorPickerTest extends Application {ImageView logo = new ImageView(new Image(getClass().getResourceAsStream("background1.jpg")));//创建并加载一个图片掉图片视图区域对象logo中public static void main(String[] args) {launch(args);}@Overridepublic void start(Stage stage) {stage.setTitle("ColorPicker测试");Scene scene = new Scene(new VBox(20), 300, 300);//创建场景对象挂载垂直布局盒子对象VBox box = (VBox) scene.getRoot(); //获取场景对象上的垂直盒子布局对象ToolBar tb = new ToolBar();//创建工具栏对象box.getChildren().add(tb);//垂直盒子布局对象中添加工具栏ToolBar对象final ComboBox logoSamples = new ComboBox();//创建ComboBox类型对象logoSamples.getItems().addAll("图片1","图片2","图片3","图片4");logoSamples.setValue("图片1");//设置ComboBox类型对象目前选择值为图片1logoSamples.valueProperty().addListener(new ChangeListener<String>() {//ComboBox类型对象选项交互事件监听器对的创建于添加@Overridepublic void changed(ObservableValue ov, String t, String t1) {//ComboBox类型对象事件改变处理函数logo.setImage(new Image(getClass().getResourceAsStream("inbox_16.png")));//将指定图片Image类型对象加载到图片视图区域对象logo中}});final ColorPicker colorPicker = new ColorPicker();//创建一个颜色选择器对象tb.getItems().addAll(logoSamples, colorPicker);//将ToolBar工具栏类型对象上添加ComboBox类型对象和ColorPicker颜色选择器对象StackPane stack = new StackPane();//创建一个栈式面板布局对象box.getChildren().add(stack);//布局盒子对象上添加一个栈式面板布局对象final SVGPath svg = new SVGPath();//创建一个划线路径型SVG类型矢量图形svg.setContent("M70,50 L90,50 L120,90 L150,50 L170,50"+ "L210,90 L180,120 L170,110 L170,200 L70,200 L70,110 L60,120 L30,90"+ "L70,50");//设置一个矢量图形的形成图形的划线轨迹svg.setStroke(Color.DARKGREY);//设置矢量图形的线色svg.setStrokeWidth(2);//设置矢量图形的线宽svg.setEffect(new DropShadow());//设置图形的阴影特效效果svg.setFill(colorPicker.getValue());//将矢量图形上添加颜色选择器所选的颜色stack.getChildren().addAll(svg, logo);//设置堆栈式布局面板对象添加到矢量图形和图形对象colorPicker.setOnAction((ActionEvent t) -> {svg.setFill(colorPicker.getValue());//颜色选择器对象的交互事件处理回调函数,将svg矢量图形填充颜色为颜色选择器对象所选择的颜色});     scene.getStylesheets().add("/controlStyle.css");stage.setScene(scene);//舞台对象上设置场景对象stage.show();//舞台对象的展示与展现}
}

 被修改了外观的Color Picker

————————————————————————

请注意ColorPicker类是ComboBoxBase类的一个扩展类并且继承了它的CSS属性。你可以定义新的combo-box-base样式来统一在ColorPickerSample应用程序中ComboBox和ColorPicker的外观。样式替换ControlStyle.css文件中的样式。

设置Combo-Box-Base样式

1

2

3

4

5

6

7

8

9

10

11

.tool-bar:horizontal {

-fx-background-color: #b3e6b3;

}

.combo-box-base {

-fx-background-color: null;

}

.combo-box-base:hover {

-fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 8, 0.0 , 0 , 0 );

}

当你编译和运行应用了新样式的ColorPickerSample应用程序时,ComboBox和ColorPicker的外观将如图所示。

统一样式的ComboBoxColorPicker

javaFX学习之颜色选择器(ColorPicker)相关推荐

  1. php和android选择器,Android_android 字体颜色选择器(ColorPicker)介绍,primary_text_yellow.xml 复制代码 代 - phpStudy...

    android 字体颜色选择器(ColorPicker)介绍 primary_text_yellow.xml themes.xml @color/primary_text_yellow相关阅读: 在L ...

  2. UWP 颜色选择器(ColorPicker) 和 自定义的Flyout(AdvancedFlyout)

    原文:UWP 颜色选择器(ColorPicker) 和 自定义的Flyout(AdvancedFlyout) ColorPicker 故事背景 项目里面需要一个像Winfrom里面那样的颜色选择器,如 ...

  3. java 选择 颜色的控件_JavaFX颜色选择器(ColorPicker)

    颜色选择器控件允许用户从可用的颜色范围中选择颜色,或通过指定RGB或HSB组合设置其他颜色.JavaFX ColorPicker控件具有颜色选择器,调色板和自定义颜色对话框窗口. 创建ColorPic ...

  4. jQuery颜色选择器ColorPicker

    ColorPicker基于强大的jQuery,使用方便.配置简单,同时不需要加载额外的CSS文件.可以随心所欲的使用到项目中,兼容各大浏览器.效果如下: 代码如下: <!DOCTYPE HTML ...

  5. 练习-原生js写的颜色选择器colorpicker

    colorpicker 文章目录 colorpicker 需求分析: 第一种方案的颜色选择器: 点击色块选择颜色 进行了改进, 把整个颜色选择器封装到js文件里, 通过appendChild的形式添加 ...

  6. 颜色选择器html组件,ColorPicker 颜色选择器

    ColorPicker 颜色选择器 ColorPicker 颜色选择器 用于颜色选择,支持多种格式. 基础用法 有默认值 无默认值 使用 v-model 与 Vue 实例中的一个变量进行双向绑定,绑定 ...

  7. ESP32 开发笔记(四)LVGL控件学习 ColorPicker 颜色选择器控件

    先看效果,创建一个颜色选择器控件,设置事件回调动态显示当前选择的颜色值 开发板购买链接https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.5 ...

  8. 【PC工具】大神开源项目-配色调色工具Colorpicker颜色选择器

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 今天看到一个不错的开源的大神的作品,Colorpicker颜色选择器,和大家分享一下. ...

  9. 【canvas系列】用canvas实现一个colorpicker(类似PS的颜色选择器)

    每个浏览器都有自己的特点,比如今天要做的colorpicker就是,一千个浏览器,一千个哈姆雷特,一千个colorpicker.今天canvas系列就用canvas做一个colorpicker. ** ...

  10. 使用颜色选择器Flexi .colorPicker教程/简介

    之前做的项目中使用了颜色标签,现在将其使用流程简单的做个整理. 1.搜索颜色选择器插件 2. 下载插件 3. 引入到webRoot下的插件包 4.新增页面引入flexi颜色选择器(引入js文件) 5. ...

最新文章

  1. html5 本地批量存储,HTML5本地存储
  2. 华为ac控制器web配置手册_家庭WIFI网络规划设计与配置实战,一文教会你
  3. arm qt5 iconv 问题
  4. isNaN与parseInt/parseFloat
  5. oracle的简单命令
  6. qq手机令牌 for android3.3 官方安装版,原QQ安全助手|QQ手机管家 for Android 安卓版v3.3.0 - PC6安卓网...
  7. 备战数学建模23-数据包络分析
  8. 洋葱模型php,PHPIZE的作用 - tree2013的个人空间 - OSCHINA - 中文开源技术交流社区
  9. 使用手机自带邮箱软件登陆网易企业邮箱
  10. 30个不可不知的容器技术工具和资源
  11. SRv6项目实践(二):基本的P4框架
  12. 【论文阅读】基于内容的科技文献大数据挖掘与应用
  13. mysql删除表中数据
  14. 高德地图js点击标记放大地图的操作
  15. 与虎宝假期可玩地方一览
  16. 最新内核仿某里巴巴的小说网站源码+支持响应式
  17. element饿了么ui表格选中后高亮颜色修改
  18. Mdb文件的还原成数据库文件(亲测有效)
  19. 「Python」学习Day 3. dict记录学生名字和成绩
  20. SSM项目初始化配置示例

热门文章

  1. java 后加_java中的前加加++和后加加++,有很多人搞的很晕,不太明白!今天我举几个例子说明下前++和后++的区别!其实大家只要记住一句话就可以了,前++是先自加再使...
  2. 计算机辅助设计1(PS)期末考核试题,福师《计算机辅助设计1(PS)》期末试卷A卷...
  3. VS与SQL、SSMS的安装,以及官方示例数据AdventureWorks2017的安装
  4. 计算机语言 指令,计算机BASIC语言    指令
  5. BMP测试图片及显示源码
  6. 计算机主机有自带的声音吗,Windows XP 系统中没有音频设备,怎么办?
  7. android多媒体stagefright框架,Android多媒体框架下Stagefright的功能扩展.PDF
  8. 《Head First HTML and CSS 》中英文下载链接
  9. jQuery右下角弹出广告
  10. 【车牌识别】基于模板匹配算法实现国外车牌识别附matlab源码