Archive for 11月, 2012

  1. Hello, JavaFX(Groovy) World!

    Posted on 11月 10th, 2012 by cx20

    JavaFX(Groovy)

    JavaFX は Java による RIA 向けの GUI ライブラリならびにプラットフォームである。
    類似の RIA プラットフォームとしては Adobe Flex や Microsoft Silverlight などがある。
    以下は Groovy による JavaFX の使用例となっている。

    ソースコード

    import javafx.application.Application
    import javafx.stage.Stage
    import javafx.scene.Scene
    import javafx.scene.layout.HBox
    import javafx.scene.control.Label
     
    class Hello extends Application {
        static void main(args) {
            Application.launch(Hello, args)
        }
     
        void start(Stage stage) {
            def hbox = new HBox()
            def scene = new Scene(hbox, 640, 480)
            hbox.getChildren().add( new Label("Hello, JavaFX World!") )
     
            stage.setScene(scene);
            stage.setTitle("Hello, World")
            stage.show()
        }
    }

    コンパイル&実行方法

    C:¥> SET JAVAFX_HOME=C:\Program Files (x86)\Oracle\JavaFX 2.0 SDK
    C:¥> groovyw -cp "%JAVAFX_HOME%\rt\lib\jfxrt.jar;." Hello.groovy

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, JavaFX World!                      |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  2. Hello, SWT(Groovy) World!

    Posted on 11月 9th, 2012 by cx20

    SWT(Groovy)

    SWT(Standard Widget Toolkit) は Java で GUI を扱うためのライブラリである。
    IBM により AWT や Swing を置き換える目的で作成された。
    以下は Groovy による SWT の使用例となっている。

    ソースコード

    import org.eclipse.swt.SWT
    import org.eclipse.swt.widgets.*
    import org.eclipse.swt.layout.*
     
    class Hello {
        static void main (args) {
            def display = new Display()
            def shell = new Shell(display)
            shell.setText("Hello, World")
     
            def layout = new FillLayout(SWT.VERTICAL)
            shell.setLayout(layout)
     
            def label = new Label(shell,SWT.BORDER)
            label.setText("Hello, SWT World!")
     
            shell.setSize( 640, 480 )
            shell.open();
     
            while (!shell.isDisposed()) {
                if (!display.readAndDispatch()) {
                    display.sleep()
                }
            }
     
            display.dispose()
        }
    }

    実行方法

    C:¥> groovyw -cp org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar Hello.groovy

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, SWT World!                         |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  3. Hello, Swing(Groovy) World!

    Posted on 11月 8th, 2012 by cx20

    Swing(Groovy)

    Swing は AWT(Abstract Window Toolkit) を拡張したものであり Java で GUI を扱うためのライブラリである。
    J2SE 1.2 以降は AWT よりも Swing が使われることが多くなっている。
    以下は Groovy による Swing の使用例となっている。

    ソースコード

    import java.awt.*
    import java.awt.event.*
    import javax.swing.*
     
    class Hello extends JFrame {
        static void main( args ) {
            def frame = new Hello( "Hello, World" )
            frame.setVisible( true )
        }
     
        Hello( String title ) {
            super( title )
            setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE )
            setLocationRelativeTo( null )
            setSize( 640, 480 )
     
            def label = new JLabel( "Hello, Swing World!" )
            label.setVerticalAlignment(JLabel.TOP)
            add( label )
        }
    }

    実行方法

    C:¥> groovyw Hello.groovy

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Swing World!                       |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  4. Hello, AWT(Groovy) World!

    Posted on 11月 7th, 2012 by cx20

    AWT(Groovy)

    AWT(Abstract Window Toolkit) は Java で GUI を扱うためのライブラリである。
    J2SE 1.2 以降は AWT を拡張した Swing が使われることが多くなっている。
    以下は Groovy による AWT の使用例となっている。

    ソースコード

    import java.awt.*
    import java.awt.event.*
     
    class Hello extends Frame {
         static void main(args) {
            def frame = new Hello( "Hello, World" )
            frame.setVisible(true)
        }
     
        Hello( title ) {
            super( title );
            addWindowListener(new HelloWindowAdapter())
            setSize(640, 480)
     
            setLayout(new FlowLayout(FlowLayout.LEFT))
     
            def label = new Label("Hello, AWT World!")
            add(label)
        }
    }
     
    class HelloWindowAdapter extends WindowAdapter {
        void windowClosing(WindowEvent e) {
            System.exit(0)
        }
    }

    実行方法

    C:¥> groovyw Hello.groovy

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, AWT World!                         |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  5. Hello, Java 3D World!

    Posted on 11月 6th, 2012 by cx20

    Java 3D

    Java 3D は Java による 3D グラフィックライブラリである。

    ソースコード

    import javax.media.j3d.*;
    import javax.swing.JFrame;
    import javax.vecmath.Vector3f;
    import javax.vecmath.Color3f;
    import java.awt.BorderLayout;
    import java.awt.GraphicsConfiguration;
    import java.awt.Font;
    import com.sun.j3d.utils.universe.SimpleUniverse;
     
    public class Hello extends JFrame {
        public static void main(String[] args) {
            Hello frame = new Hello("Hello, World");
            frame.setVisible(true);
        }
     
        public Hello( String title ) {
            super(title);
            setSize(640, 480);
            setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
            Canvas3D canvas3D = createCanvas3D();
            BranchGroup scene = createSceneGraph();
            connect(canvas3D, scene);
        }
     
        private Canvas3D createCanvas3D() {
            getContentPane().setLayout(new BorderLayout());
            GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
            Canvas3D canvas3D = new Canvas3D(config);
            getContentPane().add(canvas3D);
            return canvas3D;
        }
     
        public BranchGroup createSceneGraph() {
            BranchGroup objRoot = new BranchGroup();
            TransformGroup mover = moveTextBack();
            TransformGroup spinner = createSpinner();
            RotationInterpolator rotator = new RotationInterpolator(new Alpha(-1, 4000), spinner, new Transform3D(), 0.0f, (float)Math.PI * 2);
            rotator.setSchedulingBounds( new BoundingSphere() );
            spinner.addChild(rotator);
            objRoot.addChild(mover);
            mover.addChild(spinner);
            spinner.addChild( createTextShape());
            setLighting(mover);
            return objRoot;
        }
     
        private TransformGroup createSpinner() {
            TransformGroup spinner = new TransformGroup();
            spinner.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
            return spinner;
        }
     
        private TransformGroup moveTextBack() {
            Transform3D transform3D = new Transform3D();
            transform3D.setTranslation(new Vector3f(0.0f, 0.0f, -10.0f));
            return new TransformGroup(transform3D);
        }
     
        private Shape3D createTextShape() {
            Appearance textAppear = new Appearance();
            textAppear.setMaterial(new Material());
            Font3D font3D = new Font3D(new Font("MS Pゴシック", Font.PLAIN, 1), new FontExtrusion());
            Text3D textGeom = new Text3D(font3D, new String("Hello, Java 3D World!"));
            textGeom.setAlignment(Text3D.ALIGN_CENTER);
            Shape3D textShape = new Shape3D();
            textShape.setGeometry(textGeom);
            textShape.setAppearance(textAppear);
            return textShape;
        }
     
        private void setLighting(TransformGroup objMove) {
            DirectionalLight light = new DirectionalLight();
            light.setInfluencingBounds(new BoundingSphere());
            light.setDirection(new Vector3f(0.0f,0.0f,-1.0f));
            light.setColor(new Color3f(1.0f, 1.0f, 1.0f));
            objMove.addChild(light);
        }
     
        private void connect(Canvas3D canvas3D, BranchGroup scene) {
            SimpleUniverse universe = new SimpleUniverse(canvas3D);
            universe.getViewingPlatform().setNominalViewingTransform();
            universe.addBranchGraph(scene);
        }
    }

    コンパイル&実行方法

    C:¥> javac Hello.java
    C:¥> javaw Hello

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Java 3D World!                     |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  6. Hello, Java 2D World!

    Posted on 11月 5th, 2012 by cx20

    Java 2D

    Java 2D は Java による 2D グラフィックライブラリである。

    ソースコード

    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import javax.swing.*;
     
    public class Hello extends JFrame {
     
        public static void main(String[] args) {
            Hello frame = new Hello("Hello, World");
            frame.setVisible(true);
        }
     
        Hello( String title ) {
            super( title );
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setSize(640, 480);
     
            HelloPanel panel = new HelloPanel();
            add( panel );
        }
    }
     
    class HelloPanel extends JPanel {
        public void paintComponent(Graphics g) {
            Graphics2D g2 = (Graphics2D)g;
            g2.drawString("Hello, Java2D World!", 0, 16);
        }
    }

    コンパイル&実行方法

    C:¥> javac Hello.java
    C:¥> javaw Hello

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Java 2D World!                     |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  7. Hello, JavaFX(Java) World!

    Posted on 11月 4th, 2012 by cx20

    JavaFX(Java)

    JavaFX は Java による RIA 向けの GUI ライブラリならびにプラットフォームである。
    類似の RIA プラットフォームとしては Adobe Flex や Microsoft Silverlight などがある。

    ソースコード

    import javafx.application.Application;
    import javafx.stage.Stage;
    import javafx.scene.Scene;
    import javafx.scene.layout.HBox;
    import javafx.scene.control.Label;
     
    public class Hello extends Application {
        public static void main(String[] args) {
            Application.launch(Hello.class, args);
        }
     
        @Override
        public void start(Stage stage) {
            HBox hbox = new HBox();
            Scene scene = new Scene(hbox, 640, 480);
            hbox.getChildren().add( new Label("Hello, JavaFX World!") );
     
            stage.setScene(scene);
            stage.setTitle("Hello, World");
            stage.show();
        }
    }

    コンパイル&実行方法

    C:¥> SET JAVAFX_HOME=C:\Program Files (x86)\Oracle\JavaFX 2.0 SDK
    C:¥> javac -cp "%JAVAFX_HOME%\rt\lib\jfxrt.jar;." Hello.java
    C:¥> javaw -cp "%JAVAFX_HOME%\rt\lib\jfxrt.jar;." Hello

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, JavaFX World!                      |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  8. Hello, SWT(Java) World!

    Posted on 11月 3rd, 2012 by cx20

    SWT(Java)

    SWT(Standard Widget Toolkit) は Java で GUI を扱うためのライブラリである。
    IBM により AWT や Swing を置き換える目的で作成された。

    ソースコード

    import org.eclipse.swt.SWT;
    import org.eclipse.swt.widgets.*;
    import org.eclipse.swt.layout.*;
     
    public class Hello {
        public static void main (String [] args) {
            Display display = new Display();
            Shell shell = new Shell(display);
            shell.setText("Hello, World");
     
            FillLayout layout = new FillLayout(SWT.VERTICAL);
            shell.setLayout(layout);
     
            Label label = new Label(shell,SWT.BORDER);
            label.setText("Hello, SWT World!");
     
            shell.setSize( 640, 480 );
            shell.open();
     
            while (!shell.isDisposed()) {
                if (!display.readAndDispatch()) {
                    display.sleep();
                }
            }
     
            display.dispose();
        }
    }

    コンパイル&実行方法

    C:¥> javac -cp org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar;. Hello.java
    C:¥> javaw -cp org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar;. Hello

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, SWT World!                         |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  9. Hello, Swing(Java) World!

    Posted on 11月 2nd, 2012 by cx20

    Swing(Java)

    Swing は AWT(Abstract Window Toolkit) を拡張したものであり Java で GUI を扱うためのライブラリである。
    J2SE 1.2 以降は AWT よりも Swing が使われることが多くなっている。

    ソースコード

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
     
    public class Hello extends JFrame {
        public static void main( String args [] ) {
            Hello frame = new Hello( "Hello, World" );
            frame.setVisible( true );
        }
     
        Hello( String title ) {
            super( title );
            setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
            setLocationRelativeTo( null );
            setSize( 640, 480 );
     
            JLabel label = new JLabel( "Hello, Swing World!" );
            label.setVerticalAlignment(JLabel.TOP);
            add( label );
        }
    }

    コンパイル&実行方法

    C:¥> javac Hello.java
    C:¥> javaw Hello

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Swing World!                       |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  10. Hello, AWT(Java) World!

    Posted on 11月 1st, 2012 by cx20

    AWT(Java)

    AWT(Abstract Window Toolkit) は Java で GUI を扱うためのライブラリである。
    J2SE 1.2 以降は AWT を拡張した Swing が使われることが多くなっている。

    ソースコード

    import java.awt.*;
    import java.awt.event.*;
     
    public class Hello extends Frame {
        public static void main(String [] args) {
            Hello frame = new Hello( "Hello, World" );
            frame.setVisible(true);
        }
     
        Hello( String title ) {
            super( title );
            addWindowListener(new HelloWindowAdapter());
            setSize(640, 480);
     
            setLayout(new FlowLayout(FlowLayout.LEFT));
     
            Label label = new Label("Hello, AWT World!");
            add(label);
        }
     
    }
     
    class HelloWindowAdapter extends WindowAdapter {
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    }

    コンパイル&実行方法

    C:¥> javac Hello.java
    C:¥> javaw Hello

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, AWT World!                         |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+