📜  JavaFx |带示例的颜色选择器

📅  最后修改于: 2022-05-13 01:55:27.471000             🧑  作者: Mango

JavaFx |带示例的颜色选择器

ColorPicker 是 JavaFX 的一部分。 ColorPicker 允许用户从给定的一组颜色中选择一种颜色或制作自己的自定义颜色。初始颜色可以使用 setValue()函数设置或在构造函数中定义,用户选择的颜色可以使用 getValue()函数找到。
当用户从颜色选择器中选择一种颜色时,会生成一个 Action 事件。可以使用事件处理程序来处理此事件。

ColorPicker 外观可以通过三种方式控制:

  • 简单的按键模式
  • 菜单按钮模式
  • 拆分菜单按钮模式

    类的构造函数是:

    1. ColorPicker() :创建一个默认的 ColorPicker 实例,并将所选颜色设置为白色。
    2. ColorPicker(Color c) :创建一个 ColorPicker 实例并将所选颜色设置为给定颜色。

    常用方法

    methodexplanation
    getCustomColors()Gets the list of custom colors added to the Color Palette by the user.
    setValue(Color c)sets the color of the color picker to color c
    getValue()returns a color object that defines the color selected by the user

    下面的程序将说明颜色选择器的使用:

    1. 创建颜色选择器并将其添加到舞台的程序:该程序创建一个名称为cp的 ColorPicker。颜色选择器将在场景中创建,而场景又将托管在舞台(这是顶级 JavaFX 容器)中。函数setTitle() 用于为舞台提供标题。然后创建一个 tile-pane,调用 addChildren() 方法将颜色选择器附加到场景中,以及由 (200, 200) 指定的分辨率在代码中。最后调用 show() 方法显示最终结果。
      // Java Program to create a color picker and add it to the stage
      import javafx.application.Application;
      import javafx.scene.Scene;
      import javafx.scene.control.*;
      import javafx.scene.layout.*;
      import javafx.event.ActionEvent;
      import javafx.event.EventHandler;
      import javafx.collections.*;
      import javafx.stage.Stage;
      import javafx.scene.text.Text.*;
      import javafx.scene.paint.*;
      import javafx.scene.text.*;
      public class colorpicker extends Application {
          // labels
          Label l;
        
          // launch the application
          public void start(Stage s)
          {
              // set title for the stage
              s.setTitle("creating color picker");
        
              // create a tile pane
              TilePane r = new TilePane();
        
              // create a label
              l = new Label("This is a color picker example ");
        
              // create a color picker
              ColorPicker cp = new ColorPicker(Color.BLUE);
        
              // add label
              r.getChildren().add(l);
              r.getChildren().add(cp);
        
              // create a scene
              Scene sc = new Scene(r, 200, 200);
        
              // set the scene
              s.setScene(sc);
        
              s.show();
          }
        
          public static void main(String args[])
          {
              // launch the application
              launch(args);
          }
      }
      

      输出:

    2. 创建三种不同外观的颜色选择器的程序:该程序创建一个名称为 cp、cp1、cp2 的 ColorPicker。 cp将具有菜单按钮的外观,cp1 将具有按钮的外观,cp2 将具有拆分按钮的外观。颜色选择器将在场景内创建,而场景又将托管在舞台(这是顶级 JavaFX 容器)内。函数setTitle() 用于为舞台提供标题。然后创建一个 tile-pane,调用 addChildren() 方法在场景中附加颜色选择器,以及代码中 (200, 200) 指定的分辨率。最后调用 show() 方法显示最终结果。
      // Java Program to create color picker of three different appearance
      import javafx.application.Application;
      import javafx.scene.Scene;
      import javafx.scene.control.*;
      import javafx.scene.layout.*;
      import javafx.event.ActionEvent;
      import javafx.event.EventHandler;
      import javafx.collections.*;
      import javafx.stage.Stage;
      import javafx.scene.text.Text.*;
      import javafx.scene.paint.*;
      import javafx.scene.text.*;
      public class colorpicker_1 extends Application {
          // labels
          Label l;
        
          // launch the application
          public void start(Stage s)
          {
              // set title for the stage
              s.setTitle("creating color picker");
        
              // create a tile pane
              TilePane r = new TilePane();
        
              // create a label
              l = new Label("This is a color picker example ");
        
              // create a color picker
              ColorPicker cp = new ColorPicker(Color.BLUE);
        
              // create a color picker
              ColorPicker cp1 = new ColorPicker(Color.BLUE);
        
              // set the appearance of color picker to  button
              cp1.getStyleClass().add("button");
        
              // create a color picker
              ColorPicker cp2 = new ColorPicker(Color.BLUE);
        
              // set the appearance of color picker to split button
              cp2.getStyleClass().add("split-button");
        
              // add label
              r.getChildren().add(l);
              r.getChildren().add(cp);
              r.getChildren().add(cp1);
              r.getChildren().add(cp2);
        
              // create a scene
              Scene sc = new Scene(r, 200, 200);
        
              // set the scene
              s.setScene(sc);
        
              s.show();
          }
        
          public static void main(String args[])
          {
              // launch the application
              launch(args);
          }
      }
      

      输出

    3. 创建颜色选择器并为其添加侦听器的程序:该程序创建一个名称为 cp 的 ColorPicker。我们将创建一个事件 hab=ndler 和一个标签 l2 来显示用户选择的颜色。事件处理程序将处理颜色选择器的事件,并将标签 l2 的文本设置为所选颜色的 RGB 值。该事件将使用 setOnAction() 方法与颜色选择器相关联。颜色选择器将在场景内创建,而场景又将托管在舞台(这是顶级 JavaFX 容器)内。函数setTitle() 用于为舞台提供标题。然后创建一个 tile-pane,调用 addChildren() 方法在场景中附加颜色选择器,以及代码中 (200, 200) 指定的分辨率。最后调用 show() 方法显示最终结果。
      // Java Program to create  color picker and add listener to it
      import javafx.application.Application;
      import javafx.scene.Scene;
      import javafx.scene.control.*;
      import javafx.scene.layout.*;
      import javafx.event.ActionEvent;
      import javafx.event.EventHandler;
      import javafx.collections.*;
      import javafx.stage.Stage;
      import javafx.scene.text.Text.*;
      import javafx.scene.paint.*;
      import javafx.scene.text.*;
      public class colorpicker_2 extends Application {
          // labels
          Label l;
        
          // launch the application
          public void start(Stage s)
          {
              // set title for the stage
              s.setTitle("creating color picker");
        
              // create a tile pane
              TilePane r = new TilePane();
        
              // create a label
              l = new Label("This is a color picker example ");
              Label l1 = new Label("no selected color ");
        
              // create a color picker
              ColorPicker cp = new ColorPicker();
        
              // create a event handler
              EventHandler event = new EventHandler() {
                  public void handle(ActionEvent e)
                  {
                      // color
                      Color c = cp.getValue();
        
                      // set text of the label to RGB value of color
                      l1.setText("Red = " + c.getRed() + ", Green = " + c.getGreen() 
                                                       + ", Blue = " + c.getBlue());
                  }
              };
        
              // set listener
              cp.setOnAction(event);
        
              // add label
              r.getChildren().add(l);
              r.getChildren().add(cp);
              r.getChildren().add(l1);
        
              // create a scene
              Scene sc = new Scene(r, 500, 200);
        
              // set the scene
              s.setScene(sc);
        
              s.show();
          }
        
          public static void main(String args[])
          {
              // launch the application
              launch(args);
          }
      }
      

      输出

      注意:以上程序可能无法在在线 IDE 中运行,请使用离线编译器。
      参考: https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/ColorPicker.html