Thursday, October 29, 2015

Install java-gnome on Ubuntu 15.10, and first try.

The java-gnome User Interface Library is a Java bindings for GTK and GNOME. To install it on Ubuntu, enter the command in Terminal:
$ sudo apt-get install libjava-gnome-java


First try:

Create a my first example (copt from HERE), under trial directory ~/java-gnome-works.
 * Copyright (c) 2006-2008 Operational Dynamics Consulting Pty Ltd
 * The code in this file, and the library it is a part of, are made available
 * to you by the authors under the terms of the "GNU General Public Licence,
 * version 2" See the LICENCE file for the terms governing usage and
 * redistribution.
package button;

import org.gnome.gdk.Event;
import org.gnome.gtk.Button;
import org.gnome.gtk.Gtk;
import org.gnome.gtk.Label;
import org.gnome.gtk.VBox;
import org.gnome.gtk.Widget;
import org.gnome.gtk.Window;

 * A simple Window with a Label and a Button in it. Demonstrates the basics of
 * initializing GTK, packing Widgets into Containers, and hooking up signals.
 * This example has been around, in one form or another, since the very
 * beginnings of java-gnome. If you're just starting out with GTK and GNOME
 * don't worry; we started here too.
 * @author Andrew Cowie
 * @since 4.0.0
public class ExamplePressMe
    public static void main(String[] args) {
        final Window w;
        final VBox x;
        final Label l;
        final Button b;

         * Initialize GTK. You MUST call this to load the library before
         * trying to use any other elements provided by java-gnome.


         * Create a top level Window. It's the Container around which the
         * window manager draws decorations such as a title bar, minimize and
         * close buttons, resize edges, etc.

        w = new Window();

         * Since a Window is a Bin, it can only have one child Widget. That's
         * probably not very useful in most cases. To take that one slot and
         * turn it into many, we use a VBox, a Container that will stack its
         * children vertically.

        x = new VBox(false, 3);

         * Create a Label with some text describing the Button that will
         * follow, then add it to the VBox.

        l = new Label("Go ahead:\nMake my day");

         * Create our Button, with a nice explicit bit of text labelling it
         * and what you're to do.

        b = new Button("Press me!");

         * Now the magic part. Just sitting there, the Button won't do
         * anything. You need to hook up a "signal handler" to deal with the
         * 'clicked' signal. This is how we do it in java-gnome.
         * Button.Clicked is a Java interface. You create an instance of it to
         * do what you want when the callback happens, and then pass it to the
         * Button's connect() method.
         * The onClicked() method is what is required by the Button.Clicked
         * interface. Most IDEs will prompt you asking if you want to "Add
         * unimplemented methods?" You bet! And ta-da! You have exactly the
         * signature you need to implement a 'clicked' signal handler.
         * Since we declared b as final we can use it in the anonymous nested
         * class (yet *another* reason that final is worth using). If the
         * situation were otherwise, then the source parameter can be used to
         * find out what Button was clicked.

        b.connect(new Button.Clicked() {
            public void onClicked(Button source) {
                System.out.println("I was clicked: " + b.getLabel());

         * Now we pack the VBox into our Window, set the Window's title, and
         * invoke the command to realize everything onto the screen.

        w.setTitle("Hello World");

         * We would be be done except for one last detail. Closing a Window
         * does not terminate the application. If that's what you want (and we
         * do indeed want that here) then you need to hook up a handler to do
         * something when the 'delete-event' signal is emitted.
         * Again, the method here implements the interface.

        w.connect(new Window.DeleteEvent() {
            public boolean onDeleteEvent(Widget source, Event event) {
                return false;

         * Now we're ready to run the main loop. The signals we've hooked up
         * handlers for above won't be emitted until the user does something,
         * but no events will be processed until the main loop is running;
         * that's where the signals will come from. This call blocks. You have
         * finished setting things up and now it's up to your signal handlers
         * to carry out the program's logic in response to the user's actions;
         * the essence of event-driven programming.


Make a tests directory to hold the output.

Enter the command to compile the java code with java-gnome.
$ javac -classpath /usr/share/java/gtk-4.1.jar -d tests

Run it:
$ java -classpath /usr/share/java/gtk-4.1.jar:tests button.ExamplePressMe

Where /usr/share/java/gtk-4.1.jar is the installed gtk-4.1.jar.


Install Netbeans IDE on Ubuntu GNOME 15.10

Before install Netbeans IDE, install JDK8 first.

Follow the video to install Netbeans IDE on Ubuntu GNOME 15.10:

Try a example in Netbeans IDE:

Install Oracle Java 8 on Ubuntu 15.10 via ppa:webupd8team

ppa:webupd8team/java is a Oracle Java (JDK) Installer (automatically downloads and installs Oracle JDK7/JDK8/JDK9).

To install on Ubuntu 15.10, enter the commands in terminal:
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer

webupd8team/java also provide oracle-java8-set-default, automatically sets the Java 8 environment variables and sets JDK8 as the default JDK. To install it, use the following command:
$ sudo apt-get install oracle-java8-set-default

Monday, October 5, 2015

Remote run JavaFX on Raspbian Jessie, from Netbeans/Windows 10

Raspbian Jessie is a new major upgrade of official Raspberry Pi OS. This video show how to create Remote Java SE Platform on Netbeans IDE running under Windows 10, deploy JavaFX application remotely to Raspberry Pi running Raspbian Jessie.

Source: Remote run JavaFX on Raspbian Jessie, from Netbeans/Windows 10