Tuesday, June 21, 2016

57. ImageInput

An ImageInput can be used to create an image as the input.


The button has the ImageInput effect applied. Usually you will use css to add a background image. If the image is clicked, the text changes color.


package ex57;

import java.util.Random;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.effect.ImageInput;
import javafx.scene.image.Image;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.stage.Stage;

public class Ex57 extends Application {

    @Override
    public void start(Stage stage) {
        Group root = new Group();
        
        String hillary = "Hillary";
        String clinton = "Clinton";
        
        Image image = new Image(hillary + clinton + ".png");
        ImageInput imageInput = new ImageInput(image);

        Button button = new Button();
        button.setEffect(imageInput);
        
        Label label = new Label(hillary + " " + clinton);
        label.setLayoutX(400); label.setLayoutY(100);
        label.setFont(Font.font("Georgia", 32));
        
        button.setOnAction(e-> {
            Random rand = new Random();
            int r = rand.nextInt(256); // 0 to 255
            int g = rand.nextInt(256); // 0 to 255
            int b = rand.nextInt(256); // 0 to 255
            label.setTextFill(Color.rgb(r, g, b));
        });
        
        root.getChildren().addAll(button, label);

        Scene scene = new Scene(root, 650, 500, Color.YELLOWGREEN);
        stage.setTitle("Example 57. ImageInput");
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        Application.launch(args);
    }
}

This is the output:


No comments:

Post a Comment