Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.Map;
- import javafx.application.Application;
- import javafx.geometry.Pos;
- import javafx.stage.Stage;
- import javafx.scene.Scene;
- import javafx.scene.control.Button;
- import javafx.scene.control.Label;
- import javafx.scene.shape.Rectangle;
- import javafx.scene.shape.Circle;
- import javafx.scene.control.TextField;
- import javafx.scene.input.KeyCode;
- import javafx.scene.layout.Background;
- import javafx.scene.layout.BackgroundFill;
- import javafx.scene.layout.Pane;
- import javafx.scene.paint.Color;
- import javafx.scene.text.Font;
- import javafx.scene.text.FontWeight;
- import javafx.stage.Modality;
- import javafx.stage.StageStyle;
- public class ColorPicker extends Application{
- final Color CIRCLE_COLOR = Color.rgb(170, 170, 170);
- final Color CIRCLE_COLOR_PRESSED = Color.rgb(50, 50, 50);
- final Color CIRCLE_COLOR_MOUSE_ENTERED = Color.rgb(75, 75, 75);
- final double CIRCLE_MIN_X = 69;
- final double CIRCLE_MAX_X = 324;
- static final HashMap<Integer, Integer> values = new HashMap<>();//x's, values
- static{
- int x = 69;
- int value = 0;
- while(value != 256)
- values.put(x++, value++);
- }
- static <K, V> K getKey(HashMap<K, V> map, V value){
- Iterator<Map.Entry<K, V>> it = map.entrySet().iterator();
- while(it.hasNext()){
- Map.Entry<K, V> next = it.next();
- if(next.getValue().equals(value))
- return next.getKey();
- }
- return null;
- }
- TextField redValueField = new TextField("0");
- TextField greenValueField = new TextField("0");
- TextField blueValueField = new TextField("0");
- TextField opValueField = new TextField("100");
- TextField webStringField = new TextField(webString());
- int red(){
- return Integer.parseInt(redValueField.getText().equals("") ? "0" : redValueField.getText());
- }
- int green(){
- return Integer.parseInt(greenValueField.getText().equals("") ? "0" : greenValueField.getText());
- }
- int blue(){
- return Integer.parseInt(blueValueField.getText().equals("") ? "0" : blueValueField.getText());
- }
- double opacity(){
- String text = opValueField.getText();
- if(text.length() == 0)
- return 0;
- String value = text.substring(0, text.length());
- return Integer.parseInt(value) * 0.01;
- }
- Color color(){
- return Color.rgb(red(), green(), blue(), opacity());
- }
- String webString(){
- String red = Integer.toHexString(red()).toUpperCase();
- if(red.length() == 1)
- red = "0"+Integer.toHexString(red()).toUpperCase();
- String green = Integer.toHexString(green()).toUpperCase();
- if(green.length() == 1)
- green = "0"+Integer.toHexString(green()).toUpperCase();
- String blue = Integer.toHexString(blue()).toUpperCase();
- if(blue.length() == 1)
- blue = "0"+Integer.toHexString(blue()).toUpperCase();
- return "#"+red+green+blue;
- }
- //-------------------------------------------------------------------------------------
- private static final Rectangle redColoredBar = new Rectangle(0, 15);
- private static final Rectangle greenColoredBar = new Rectangle(0, 15);
- private static final Rectangle blueColoredBar = new Rectangle(0, 15);
- static{
- redColoredBar.setArcHeight(15);
- redColoredBar.setArcWidth(15);
- redColoredBar.setFill(Color.RED);
- greenColoredBar.setArcHeight(15);
- greenColoredBar.setArcWidth(15);
- greenColoredBar.setFill(Color.rgb(0, 255, 0));
- blueColoredBar.setArcHeight(15);
- blueColoredBar.setArcWidth(15);
- blueColoredBar.setFill(Color.rgb(0, 0, 255));
- }
- //-------------------------------------------------------------------------------------
- @Override
- public void start(Stage stage) throws Exception {
- Pane root = new Pane();
- root.setBackground( new Background( new BackgroundFill(Color.rgb(40, 40, 40), null, null) ) );
- Rectangle previewArea = new Rectangle(400, 100);
- root.getChildren().add(previewArea);
- root.setOnKeyPressed((event) -> {
- if(event.getCode() == KeyCode.ESCAPE){
- Stage exitRequestStage = new Stage();
- exitRequestStage.initModality(Modality.APPLICATION_MODAL);
- exitRequestStage.initStyle(StageStyle.UTILITY);
- Pane exitRequestStageRootPane = new Pane();
- exitRequestStageRootPane.setBackground( new Background( new BackgroundFill(Color.WHITE, null, null) ) );
- Label msg = new Label("Do you want to exit ColorPicker?");
- msg.setFont(Font.font(15));
- msg.setTextFill(Color.BLUE);
- Button yes = new Button("Yes");
- yes.setFont(Font.font(15));
- yes.setOnAction((Event) -> System.exit(0));
- yes.setPrefSize(100, 30);
- Button no = new Button("No");
- no.setFont(Font.font(15));
- no.setOnAction((Event) -> exitRequestStage.close());
- no.setPrefSize(100, 30);
- Rectangle rect = new Rectangle(300, 50);
- rect.setFill(Color.rgb(220, 220, 220));
- exitRequestStageRootPane.getChildren().addAll(msg, rect, yes, no);
- msg.relocate(10, 10);
- rect.relocate(0, 50);
- yes.relocate(30, 55);
- no.relocate(160, 55);
- exitRequestStage.setScene(new Scene(exitRequestStageRootPane, 300, 100));
- exitRequestStage.show();
- }
- });
- //--------------------------------------------------------------------------------
- Label redMsg = new Label("Red:");
- redMsg.setTextFill(Color.rgb(255, 0, 0));
- redMsg.setFont(Font.font(15));
- Rectangle redBar = new Rectangle(273, 15, Color.WHITE);
- redBar.setArcHeight(15);
- redBar.setArcWidth(15);
- redBar.setOpacity(.3);
- Circle redCircle = new Circle(10, CIRCLE_COLOR);
- redValueField.setShape(new Rectangle(50, 6));
- redValueField.setPrefSize(50, 6);
- root.getChildren().addAll(redMsg, redColoredBar, redBar, redCircle, redValueField);
- redMsg.relocate(5, 106);
- redBar.relocate(60, 110);
- redColoredBar.relocate(60, 110);
- redCircle.relocate(59, 108.1);
- redValueField.relocate(340, 105.5);
- redValueField.setOnKeyReleased((event) -> {
- String text = redValueField.getText();
- if(text.equals("")){
- redCircle.setLayoutX(CIRCLE_MIN_X);
- previewArea.setFill(Color.BLACK);
- }else{
- int value = Integer.parseInt(text);
- redCircle.setLayoutX(getKey(values, value));
- previewArea.setFill(color());
- }
- webStringField.setText(webString());
- double barWidth = (getKey(values, Integer.parseInt(text)) - CIRCLE_MIN_X)+10;
- redColoredBar.setWidth(barWidth);
- });
- redCircle.setOnMouseDragged((event) -> {
- double x = event.getSceneX();
- if(x >= CIRCLE_MIN_X && x <= CIRCLE_MAX_X){
- redCircle.setLayoutX(x);
- redValueField.setText( String.valueOf( values.get((int)x) ) );
- previewArea.setFill(color());
- webStringField.setText(webString());
- double barWidth = (x - CIRCLE_MIN_X)+10;
- redColoredBar.setWidth(barWidth);
- }
- });
- redCircle.setOnMousePressed((event) -> redCircle.setFill(CIRCLE_COLOR_PRESSED));
- redCircle.setOnMouseEntered((event) -> redCircle.setFill(CIRCLE_COLOR_MOUSE_ENTERED));
- redCircle.setOnMouseReleased((event) -> redCircle.setFill(CIRCLE_COLOR));
- redCircle.setOnMouseExited((event) -> redCircle.setFill(CIRCLE_COLOR));
- redBar.setOnMousePressed((event) -> {
- double x = event.getSceneX();
- if(x < CIRCLE_MIN_X || x > CIRCLE_MAX_X)
- return;
- redCircle.setLayoutX(x);
- int value = values.get( (int)x );
- redValueField.setText(String.valueOf( value ));
- previewArea.setFill(color());
- webStringField.setText(webString());
- double barWidth = (x - CIRCLE_MIN_X)+10;
- redColoredBar.setWidth(barWidth);
- });
- redBar.setOnMouseDragged((event) -> {
- double x = event.getSceneX();
- if(x >= CIRCLE_MIN_X && x <= CIRCLE_MAX_X){
- redCircle.setLayoutX(x);
- redValueField.setText( String.valueOf( values.get((int)x) ) );
- previewArea.setFill(color());
- webStringField.setText(webString());
- double barWidth = (x - CIRCLE_MIN_X)+10;
- redColoredBar.setWidth(barWidth);
- }
- });
- //--------------------------------------------------------------------------------
- //--------------------------------------------------------------------------------
- Label greenMsg = new Label("Green:");
- greenMsg.setTextFill(Color.rgb(0, 255, 0));
- greenMsg.setFont(Font.font(15));
- Rectangle greenBar = new Rectangle(273, 15, Color.WHITE);
- greenBar.setArcHeight(15);
- greenBar.setArcWidth(15);
- greenBar.setOpacity(.3);
- Circle greenCircle = new Circle(10, CIRCLE_COLOR);
- greenValueField.setShape(new Rectangle(50, 6));
- greenValueField.setPrefSize(50, 6);
- root.getChildren().addAll(greenMsg, greenColoredBar, greenBar, greenCircle, greenValueField);
- greenMsg.relocate(5, 140);
- greenBar.relocate(60, 144);//124
- greenColoredBar.relocate(60, 144);
- greenCircle.relocate(59, 142.1);//122.1
- greenValueField.relocate(340, 139.5);//120.5
- greenValueField.setOnKeyReleased((event) -> {
- String text = greenValueField.getText();
- if(text.equals("")){
- greenCircle.setLayoutX(CIRCLE_MIN_X);
- previewArea.setFill(color());
- }else{
- int value = Integer.parseInt(text);
- greenCircle.setLayoutX(getKey(values, value));
- previewArea.setFill(color());
- }
- webStringField.setText(webString());
- double barWidth = (getKey(values, Integer.parseInt(text)) - CIRCLE_MIN_X)+10;
- greenColoredBar.setWidth(barWidth);
- });
- greenCircle.setOnMouseDragged((event) -> {
- double x = event.getSceneX();
- if(x >= CIRCLE_MIN_X && x <= CIRCLE_MAX_X){
- greenCircle.setLayoutX(x);
- greenValueField.setText( String.valueOf( values.get((int)x) ) );
- previewArea.setFill(color());
- webStringField.setText(webString());
- double barWidth = (x - CIRCLE_MIN_X)+10;
- greenColoredBar.setWidth(barWidth);
- }
- });
- greenCircle.setOnMousePressed((event) -> greenCircle.setFill(CIRCLE_COLOR_PRESSED));
- greenCircle.setOnMouseEntered((event) -> greenCircle.setFill(CIRCLE_COLOR_MOUSE_ENTERED));
- greenCircle.setOnMouseReleased((event) -> greenCircle.setFill(CIRCLE_COLOR));
- greenCircle.setOnMouseExited((event) -> greenCircle.setFill(CIRCLE_COLOR));
- greenBar.setOnMousePressed((event) -> {
- double x = event.getSceneX();
- if(x < CIRCLE_MIN_X || x > CIRCLE_MAX_X)
- return;
- greenCircle.setLayoutX(x);
- int value = values.get( (int)x );
- greenValueField.setText(String.valueOf( value ));
- previewArea.setFill(color());
- webStringField.setText(webString());
- double barWidth = (x - CIRCLE_MIN_X)+10;
- greenColoredBar.setWidth(barWidth);
- });
- greenBar.setOnMouseDragged((event) -> {
- double x = event.getSceneX();
- if(x >= CIRCLE_MIN_X && x <= CIRCLE_MAX_X){
- greenCircle.setLayoutX(x);
- greenValueField.setText( String.valueOf( values.get((int)x) ) );
- previewArea.setFill(color());
- webStringField.setText(webString());
- double barWidth = (x - CIRCLE_MIN_X)+10;
- greenColoredBar.setWidth(barWidth);
- }
- });
- //--------------------------------------------------------------------------------
- //--------------------------------------------------------------------------------
- Label blueMsg = new Label("Blue:");
- blueMsg.setTextFill(Color.rgb(0, 0, 255));
- blueMsg.setFont(Font.font(15));
- Rectangle blueBar = new Rectangle(273, 15, Color.WHITE);
- blueBar.setArcHeight(15);
- blueBar.setArcWidth(15);
- blueBar.setOpacity(.3);
- Circle blueCircle = new Circle(10, CIRCLE_COLOR);
- blueValueField.setShape(new Rectangle(50, 6));
- blueValueField.setPrefSize(50, 6);
- root.getChildren().addAll(blueMsg, blueColoredBar, blueBar, blueCircle, blueValueField);
- blueMsg.relocate(5, 174);
- blueBar.relocate(60, 177);//124
- blueColoredBar.relocate(60, 177);
- blueCircle.relocate(59, 175.1);//122.1
- blueValueField.relocate(340, 173.5);//120.5
- blueValueField.setOnKeyReleased((event) -> {
- String text = blueValueField.getText();
- if(text.equals("")){
- blueCircle.setLayoutX(CIRCLE_MIN_X);
- previewArea.setFill(color());
- }else{
- int value = Integer.parseInt(text);
- blueCircle.setLayoutX(getKey(values, value));
- previewArea.setFill(color());
- }
- webStringField.setText(webString());
- double barWidth = (getKey(values, Integer.parseInt(text)) - CIRCLE_MIN_X)+10;
- blueColoredBar.setWidth(barWidth);
- });
- blueCircle.setOnMouseDragged((event) -> {
- double x = event.getSceneX();
- if(x >= CIRCLE_MIN_X && x <= CIRCLE_MAX_X){
- blueCircle.setLayoutX(x);
- blueValueField.setText( String.valueOf( values.get((int)x) ) );
- previewArea.setFill(color());
- webStringField.setText(webString());
- double barWidth = (x - CIRCLE_MIN_X)+10;
- blueColoredBar.setWidth(barWidth);
- }
- });
- blueCircle.setOnMousePressed((event) -> blueCircle.setFill(CIRCLE_COLOR_PRESSED));
- blueCircle.setOnMouseEntered((event) -> blueCircle.setFill(CIRCLE_COLOR_MOUSE_ENTERED));
- blueCircle.setOnMouseReleased((event) -> blueCircle.setFill(CIRCLE_COLOR));
- blueCircle.setOnMouseExited((event) -> blueCircle.setFill(CIRCLE_COLOR));
- blueBar.setOnMousePressed((event) -> {
- double x = event.getSceneX();
- if(x < CIRCLE_MIN_X || x > CIRCLE_MAX_X)
- return;
- blueCircle.setLayoutX(x);
- int value = values.get( (int)x );
- blueValueField.setText(String.valueOf( value ));
- previewArea.setFill(color());
- webStringField.setText(webString());
- double barWidth = (x - CIRCLE_MIN_X)+10;
- blueColoredBar.setWidth(barWidth);
- });
- blueBar.setOnMouseDragged((event) -> {
- double x = event.getSceneX();
- if(x >= CIRCLE_MIN_X && x <= CIRCLE_MAX_X){
- blueCircle.setLayoutX(x);
- blueValueField.setText( String.valueOf( values.get((int)x) ) );
- previewArea.setFill(color());
- webStringField.setText(webString());
- double barWidth = (x - CIRCLE_MIN_X)+10;
- blueColoredBar.setWidth(barWidth);
- }
- });
- //--------------------------------------------------------------------------------
- //--------------------------------------------------------------------------------
- Label opMsg = new Label("Opacity(%):");
- opMsg.setTextFill(Color.WHITE);
- opMsg.setFont(Font.font(15));
- {
- Rectangle rect = new Rectangle(60, 20);
- rect.setArcHeight(10);
- rect.setArcWidth(10);
- opValueField.setShape(rect);
- opValueField.setBackground( new Background( new BackgroundFill(Color.rgb(140, 140, 140), null, null) ) );
- opValueField.setStyle("-fx-font: normal 15px 'system';"
- + "-fx-text-fill: white");
- opValueField.setOpacity(0.7);
- }
- opValueField.setPrefSize(60, 20);
- opValueField.setAlignment(Pos.CENTER);
- root.getChildren().addAll(opMsg, opValueField);
- opMsg.relocate(5, 212);
- opValueField.relocate(85, 208);
- opValueField.setFont(Font.font(14));
- opValueField.setOnKeyReleased((event) -> {
- if(opValueField.getText().length() == 0){
- previewArea.setFill(Color.rgb(red(), green(), blue(), 0));
- }
- previewArea.setFill(color());
- });
- //--------------------------------------------------------------------------------
- //--------------------------------------------------------------------------------
- Label webMsg1 = new Label("Web");
- webMsg1.setFont(Font.font("System", FontWeight.BOLD, 15));
- webMsg1.setTextFill(Color.rgb(255, 0, 0));
- Label webMsg2 = new Label("Str");
- webMsg2.setFont(Font.font("System", FontWeight.BOLD, 15));
- webMsg2.setTextFill(Color.rgb(0, 255, 0));
- Label webMsg3 = new Label("ing");
- webMsg3.setFont(Font.font("System", FontWeight.BOLD, 15));
- webMsg3.setTextFill(Color.rgb(0, 0, 255));
- Label columnMsg = new Label(":");
- columnMsg.setFont(Font.font("System", FontWeight.BOLD, 15));
- columnMsg.setTextFill(Color.WHITE);
- {
- Rectangle rect = new Rectangle(100, 20);
- rect.setArcHeight(10);
- rect.setArcWidth(10);
- webStringField.setShape(rect);
- webStringField.setPrefSize(100, 20);
- webStringField.setBackground( new Background( new BackgroundFill(Color.rgb(140, 140, 140), null, null) ) );
- webStringField.setStyle("-fx-font: normal 15px 'system';"
- + "-fx-text-fill: white");
- webStringField.setOpacity(0.7);
- }
- root.getChildren().addAll(webMsg1, webMsg2, webMsg3, columnMsg, webStringField);
- webMsg1.relocate(205, 212);
- webMsg2.relocate(244, 212);
- webMsg3.relocate(263, 212);
- columnMsg.relocate(284, 212);
- webStringField.relocate(290, 208);
- webStringField.setFont(Font.font(15));
- webStringField.setEditable(false);
- //--------------------------------------------------------------------------------
- stage.setResizable(false);
- stage.setScene(new Scene(root, 390, 240));
- stage.setTitle("ColorPicker");
- stage.show();
- }
- public static void main(String[] args){
- Application.launch(args);
- }
- }
Add Comment
Please, Sign In to add comment