Wednesday, July 2, 2014

Java: The Complete Reference, Ninth Edition



Fully updated for Java SE 8

Java: The Complete Reference, Ninth Edition

Java: The Complete Reference, Ninth Edition explains how to develop, compile, debug, and run Java programs. Bestselling programming author Herb Schildt covers the entire Java language, including its syntax, keywords, and fundamental programming principles, as well as significant portions of the Java API library. JavaBeans, servlets, applets, and Swing are examined and real-world examples demonstrate Java in action. New Java SE 8 features such as lambda expressions, the stream library, and the default interface method are discussed in detail. This Oracle Press resource also offers a solid introduction to JavaFX.

Coverage includes:

  • Data types, variables, arrays, and operators
  • Control statements
  • Classes, objects, and methods
  • Method overloading and overriding
  • Inheritance
  • Interfaces and packages
  • Exception handling
  • Multithreaded programming
  • Enumerations, autoboxing, and annotations
  • The I/O classes
  • Generics
  • Lambda expressions
  • String handling
  • The Collections Framework
  • Networking
  • Event handling
  • AWT and Swing
  • The Concurrent API
  • The Stream API
  • Regular expressions
  • JavaFX
  • JavaBeans
  • Applets and servlets
  • Much, much more

Thursday, June 19, 2014

Color.deriveColor() example

Example of setting of hueShift, saturationFactor, brightnessFactor, opacityFactor in Color.deriveColor().


package javafx8image;

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.image.PixelReader;
import javafx.scene.image.PixelWriter;
import javafx.scene.image.WritableImage;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

/**
 *
 * @web http://java-buddy.blogspot.com/
 */
public class JavaFX8Image extends Application {

    Image imageSrc;
    
    Slider sliderHueShift;
    Slider sliderSaturationFactor;
    Slider sliderBrightnessFactor;
    Slider sliderOpacityFactor;
    ImageView imageViewDest;
    
    @Override
    public void start(Stage primaryStage) {
        
        imageSrc = new Image("http://goo.gl/kYEQl");
        
        sliderHueShift = new Slider(0, 360, 0);
        sliderSaturationFactor = new Slider(0, 1, 1);
        sliderBrightnessFactor = new Slider(0, 1, 1);
        sliderOpacityFactor = new Slider(0, 1, 1);
        sliderHueShift.valueProperty().addListener(listener);
        sliderSaturationFactor.valueProperty().addListener(listener);
        sliderBrightnessFactor.valueProperty().addListener(listener);
        sliderOpacityFactor.valueProperty().addListener(listener);

        imageViewDest = new ImageView();

        WritableImage imageDest = copyImage(imageSrc, 
                sliderHueShift.getValue(), 
                sliderSaturationFactor.getValue(), 
                sliderBrightnessFactor.getValue(), 
                sliderOpacityFactor.getValue());
        imageViewDest.setImage(imageDest);

        VBox vBox = new VBox();
        vBox.getChildren().addAll(
                new Label("hueShift"),
                sliderHueShift, 
                new Label("saturationFactor"),
                sliderSaturationFactor, 
                new Label("brightnessFactor"),
                sliderBrightnessFactor, 
                new Label("opacityFactor"),
                sliderOpacityFactor, 
                imageViewDest);

        StackPane root = new StackPane();
        root.getChildren().addAll(vBox);

        Scene scene = new Scene(root, 640, 360);

        primaryStage.setTitle("java-buddy.blogspot.com");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
    
    ChangeListener<Number> listener = new ChangeListener<Number>(){

        @Override
        public void changed(ObservableValue<? extends Number> observable, 
                Number oldValue, Number newValue) {
            WritableImage imageDest = copyImage(imageSrc, 
                sliderHueShift.getValue(), 
                sliderSaturationFactor.getValue(), 
                sliderBrightnessFactor.getValue(), 
                sliderOpacityFactor.getValue());
        imageViewDest.setImage(imageDest);
        }
    };

    private WritableImage copyImage(
            Image src, 
            double hueShift, 
            double saturationFactor, 
            double brightnessFactor,
            double opacityFactor) {

        PixelReader pixelReader = src.getPixelReader();
        WritableImage dest
                = new WritableImage(
                        (int) src.getWidth(),
                        (int) src.getHeight());
        PixelWriter pixelWriter = dest.getPixelWriter();

        for (int y = 0; y < src.getHeight(); y++) {
            for (int x = 0; x < src.getWidth(); x++) {
                Color color = pixelReader.getColor(x, y);

                color = color.deriveColor(
                        hueShift,
                        saturationFactor,
                        brightnessFactor,
                        opacityFactor);
                        
                pixelWriter.setColor(x, y, color);
            }
        }

        return dest;
    }

}

Wednesday, June 18, 2014

Various effect of creating Color with brighter(), darker(), saturate(), desaturate(), grayscale() and invert().

This example show various effect of creating Color when copying image, with brighter(), darker(), saturate(), desaturate(), grayscale() and invert().


package javafx8image;

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.ListView;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.image.PixelReader;
import javafx.scene.image.PixelWriter;
import javafx.scene.image.WritableImage;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

/**
 *
 * @web http://java-buddy.blogspot.com/
 */
public class JavaFX8Image extends Application {

    @Override
    public void start(Stage primaryStage) {
        
        Image imageSrc = new Image("http://goo.gl/kYEQl");
        
        ListView listView = new ListView();
        ImageView imageViewDest = new ImageView();
        
        ObservableList<String> items =
            FXCollections.observableArrayList (
                "NO", "brighter", "darker", "saturate", "desaturate", 
                "grayscale", "invert");
        listView.setItems(items);
        
        listView.getSelectionModel().selectedItemProperty().addListener(
                new ChangeListener<String>(){

            @Override
            public void changed(ObservableValue<? extends String> observable, 
                    String oldValue, String newValue) {
                WritableImage imageDest = copyImage(imageSrc, 
                        (String)listView.getSelectionModel().getSelectedItem());
                imageViewDest.setImage(imageDest);
            }
        });

        WritableImage imageDest = copyImage(imageSrc, 
                (String)listView.getSelectionModel().getSelectedItem());
        imageViewDest.setImage(imageDest);

        HBox hBox = new HBox();
        hBox.getChildren().addAll(imageViewDest, listView);

        StackPane root = new StackPane();
        root.getChildren().addAll(hBox);

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("java-buddy.blogspot.com");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

    private WritableImage copyImage(Image src, String op) {

        PixelReader pixelReader = src.getPixelReader();
        WritableImage dest
                = new WritableImage(
                        (int) src.getWidth(),
                        (int) src.getHeight());
        PixelWriter pixelWriter = dest.getPixelWriter();

        for (int y = 0; y < src.getHeight(); y++) {
            for (int x = 0; x < src.getWidth(); x++) {
                Color color = pixelReader.getColor(x, y);

                if(op!=null){
                    switch(op){
                    case "brighter":
                        color = color.brighter();
                        break;
                    case "darker":
                        color = color.darker();
                        break;
                    case "saturate":
                        color = color.saturate();
                        break;
                    case "desaturate":
                        color = color.desaturate();
                        break;
                    case "grayscale":
                        color = color.grayscale();
                        break;
                    case "invert":
                        color = color.invert();
                        break;
                    }
                }
                
                pixelWriter.setColor(x, y, color);
            }
        }

        return dest;
    }

}