Archive for 11月, 2012
-
Hello, Swing(JRuby) World!
Posted on 11月 20th, 2012 by cx20
Swing(JRuby)
Swing は AWT(Abstract Window Toolkit) を拡張したものであり Java で GUI を扱うためのライブラリである。
J2SE 1.2 以降は AWT よりも Swing が使われることが多くなっている。
以下は JRuby による Swing の使用例となっている。ソースコード
require 'java' import 'javax.swing.JFrame' import 'javax.swing.JLabel' class Hello < JFrame def initialize(title) super( title ) self.setDefaultCloseOperation( JFrame::EXIT_ON_CLOSE ) self.setSize( 640, 480 ) @label = JLabel.new( "Hello, Swing World!" ) @label.setVerticalAlignment(JLabel::TOP) self.add( @label ) end end @frame = Hello.new( "Hello, World" ) @frame.setVisible( true )
実行方法
C:¥> jrubyw Hello.rb
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, Swing World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, AWT(JRuby) World!
Posted on 11月 19th, 2012 by cx20
AWT(JRuby)
AWT(Abstract Window Toolkit) は Java で GUI を扱うためのライブラリである。
J2SE 1.2 以降は AWT を拡張した Swing が使われることが多くなっている。
以下は JRuby による AWT の使用例となっている。ソースコード
require "java" import java.lang.System import java.awt.Frame import java.awt.Label import java.awt.FlowLayout import java.awt.event.WindowAdapter class Hello < Frame def initialize(title) super(title) self.addWindowListener(HelloWindowAdapter.new) self.setSize(640, 480) self.setLayout(FlowLayout.new(FlowLayout::LEFT)) @label = Label.new('Hello, AWT World!') self.add(@label) end end class HelloWindowAdapter < WindowAdapter def windowClosing(e) System.exit(0) end end @frame = Hello.new('Hello, World') @frame.setVisible(true)
実行方法
C:¥> jrubyw Hello.rb
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, AWT World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, Java 3D(Scala) World!
Posted on 11月 18th, 2012 by cx20
Java 3D
Java 3D は Java による 3D グラフィックライブラリである。
以下は Scala による 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 object Hello { def main(args: Array[String]) { var frame = new HelloFrame("Hello, World") frame.setVisible(true) } } class HelloFrame( title: String ) extends JFrame { setTitle(title) setSize(640, 480) setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ) var canvas3D = createCanvas3D() var scene = createSceneGraph() connect(canvas3D, scene) def createCanvas3D(): Canvas3D = { getContentPane().setLayout(new BorderLayout()) var config = SimpleUniverse.getPreferredConfiguration() var canvas3D = new Canvas3D(config) getContentPane().add(canvas3D) return canvas3D } def createSceneGraph(): BranchGroup = { var objRoot = new BranchGroup() var mover = moveTextBack() var spinner = createSpinner() var rotator = new RotationInterpolator(new Alpha(-1, 4000), spinner, new Transform3D(), 0.0f, Math.Pi.toFloat * 2.0f) rotator.setSchedulingBounds( new BoundingSphere() ) spinner.addChild(rotator) objRoot.addChild(mover) mover.addChild(spinner) spinner.addChild( createTextShape()) setLighting(mover) return objRoot } def createSpinner(): TransformGroup = { var spinner = new TransformGroup() spinner.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE) return spinner } def moveTextBack(): TransformGroup = { var transform3D = new Transform3D() transform3D.setTranslation(new Vector3f(0.0f, 0.0f, -10.0f)) return new TransformGroup(transform3D) } def createTextShape(): Shape3D = { var textAppear = new Appearance() textAppear.setMaterial(new Material()) var font3D = new Font3D(new Font("MS Pゴシック", Font.PLAIN, 1), new FontExtrusion()) var textGeom = new Text3D(font3D, new String("Hello, Java 3D World!")) textGeom.setAlignment(Text3D.ALIGN_CENTER) var textShape = new Shape3D() textShape.setGeometry(textGeom) textShape.setAppearance(textAppear) return textShape } def setLighting(objMove: TransformGroup) { var 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) } def connect(canvas3D: Canvas3D, scene: BranchGroup) { var universe = new SimpleUniverse(canvas3D) universe.getViewingPlatform().setNominalViewingTransform() universe.addBranchGraph(scene) } }
実行方法
C:¥> scalac Hello.scala C:¥> scala Hello
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, Java 3D World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, Java 2D(Scala) World!
Posted on 11月 17th, 2012 by cx20
Java 2D
Java 2D は Java による 2D グラフィックライブラリである。
以下は Scala による Java 2D の使用例となっている。ソースコード
import java.awt.Graphics import java.awt.Graphics2D import javax.swing._ object Hello { def main(args: Array[String]) { var frame = new HelloFrame("Hello, World") frame.setVisible(true) } } class HelloFrame( title: String ) extends JFrame { setTitle( title ) setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) setSize(640, 480) var panel = new HelloPanel() add( panel ) } class HelloPanel extends JPanel { override def paintComponent(g: Graphics) { var g2 = g g2.drawString("Hello, Java2D World!", 0, 16) } }
コンパイル&実行方法
C:¥> scalac Hello.scala C:¥> scala Hello
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, Java 2D World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, JavaFX(Scala) World!
Posted on 11月 16th, 2012 by cx20
JavaFX(Scala)
JavaFX は Java による RIA 向けの GUI ライブラリならびにプラットフォームである。
類似の RIA プラットフォームとしては Adobe Flex や Microsoft Silverlight などがある。
以下は Scala による JavaFX の使用例となっている。ソースコード
import javafx.application.Application import javafx.stage.Stage import javafx.scene.Scene import javafx.scene.layout.HBox import javafx.scene.control.Label object Hello { def main(args: Array[String]) { Application.launch(classOf[HelloApplication], args:_*) } } class HelloApplication extends Application { def start(stage: Stage) { var hbox = new HBox() var 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:¥> scalac -cp "%JAVAFX_HOME%\rt\lib\jfxrt.jar;." Hello.scala C:¥> scala -cp "%JAVAFX_HOME%\rt\lib\jfxrt.jar;." Hello
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, JavaFX World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, SWT(Scala) World!
Posted on 11月 15th, 2012 by cx20
SWT(Scala)
SWT(Standard Widget Toolkit) は Java で GUI を扱うためのライブラリである。
IBM により AWT や Swing を置き換える目的で作成された。
以下は Scala による SWT の使用例となっている。ソースコード
import org.eclipse.swt.SWT import org.eclipse.swt.widgets._ import org.eclipse.swt.layout._ object Hello { def main (args: Array[String]) { var display = new Display() var shell = new Shell(display) shell.setText("Hello, World") var layout = new FillLayout(SWT.VERTICAL) shell.setLayout(layout) var 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:¥> scalac -cp org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar;. Hello.scala C:¥> scala -cp org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar;. Hello
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, SWT World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, Swing(Scala) World!
Posted on 11月 14th, 2012 by cx20
Swing(Scala)
Swing は AWT(Abstract Window Toolkit) を拡張したものであり Java で GUI を扱うためのライブラリである。
J2SE 1.2 以降は AWT よりも Swing が使われることが多くなっている。
以下は Scala による Swing の使用例となっている。ソースコード
import java.awt._ import java.awt.event._ import javax.swing._ object Hello { def main( args: Array[String] ) { var frame = new HelloFrame( "Hello, World" ) frame.setVisible( true ) } } class HelloFrame( title: String ) extends JFrame { setTitle( title ) setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ) setLocationRelativeTo( null ) setSize( 640, 480 ) var label = new JLabel( "Hello, Swing World!" ) label.setVerticalAlignment(SwingConstants.TOP) add( label ) }
コンパイル&実行方法
C:¥> scalac Hello.scala C:¥> scala Hello
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, Swing World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, AWT(Scala) World!
Posted on 11月 13th, 2012 by cx20
AWT(Scala)
AWT(Abstract Window Toolkit) は Java で GUI を扱うためのライブラリである。
J2SE 1.2 以降は AWT を拡張した Swing が使われることが多くなっている。
以下は Scala による AWT の使用例となっている。ソースコード
import java.awt._ import java.awt.event._ object Hello { def main(args: Array[String]) { var frame = new HelloFrame( "Hello, World" ) frame.setVisible(true) } } class HelloFrame( title: String ) extends Frame { setTitle( title ) addWindowListener(new HelloWindowAdapter()) setSize(640, 480) setLayout(new FlowLayout(FlowLayout.LEFT)) var label = new Label("Hello, AWT World!") add(label) } class HelloWindowAdapter extends WindowAdapter { override def windowClosing( e: WindowEvent ) { System.exit(0) } }
コンパイル&実行方法
C:¥> scalac Hello.scala C:¥> scala Hello
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, AWT World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, Java 3D(Groovy) World!
Posted on 11月 12th, 2012 by cx20
Java 3D
Java 3D は Java による 3D グラフィックライブラリである。
以下は Groovy による 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 class Hello extends JFrame { static void main(args) { def frame = new Hello("Hello, World") frame.setVisible(true) } Hello( title ) { super(title) setSize(640, 480) setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ) def canvas3D = createCanvas3D() BranchGroup scene = createSceneGraph() connect(canvas3D, scene) } Canvas3D createCanvas3D() { getContentPane().setLayout(new BorderLayout()) GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration() def canvas3D = new Canvas3D(config) getContentPane().add(canvas3D) return canvas3D } BranchGroup createSceneGraph() { def objRoot = new BranchGroup() def mover = moveTextBack() def spinner = createSpinner() def 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 } TransformGroup createSpinner() { def spinner = new TransformGroup() spinner.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE) return spinner } TransformGroup moveTextBack() { def transform3D = new Transform3D() transform3D.setTranslation(new Vector3f(0.0f, 0.0f, -10.0f)) return new TransformGroup(transform3D) } Shape3D createTextShape() { def textAppear = new Appearance() textAppear.setMaterial(new Material()) def font3D = new Font3D(new Font("MS Pゴシック", Font.PLAIN, 1), new FontExtrusion()) def textGeom = new Text3D(font3D, new String("Hello, Java 3D World!")) textGeom.setAlignment(Text3D.ALIGN_CENTER) def textShape = new Shape3D() textShape.setGeometry(textGeom) textShape.setAppearance(textAppear) return textShape } void setLighting(objMove) { def 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) } void connect(canvas3D, scene) { def universe = new SimpleUniverse(canvas3D) universe.getViewingPlatform().setNominalViewingTransform() universe.addBranchGraph(scene) } }
実行方法
C:¥> groovyw Hello.groovy
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, Java 3D World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, Java 2D(Groovy) World!
Posted on 11月 11th, 2012 by cx20
Java 2D
Java 2D は Java による 2D グラフィックライブラリである。
以下は Groovy による Java 2D の使用例となっている。ソースコード
import java.awt.Graphics import java.awt.Graphics2D import javax.swing.* class Hello extends JFrame { static void main(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:¥> groovyw Hello.groovy
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, Java 2D World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+