-
Hello, AWT(Jython) World!
Posted on 11月 25th, 2012 by cx20
AWT(Jython)
AWT(Abstract Window Toolkit) は Java で GUI を扱うためのライブラリである。
J2SE 1.2 以降は AWT を拡張した Swing が使われることが多くなっている。
以下は Jython による AWT の使用例となっている。ソースコード
from java.lang import System from java.awt import Frame from java.awt import Label from java.awt import FlowLayout from java.awt.event import WindowAdapter class HelloFrame(Frame): def __init__(self): self.setTitle( "Hello, World" ) self.addWindowListener(HelloWindowAdapter()) self.setSize( 640, 480 ) self.setLayout( FlowLayout(FlowLayout.LEFT) ) label = Label( "Hello, AWT World!" ) self.add( label ) class HelloWindowAdapter(WindowAdapter): def windowClosing(self, event): System.exit(0) if __name__ == '__main__': frame = HelloFrame() frame.setVisible(True)
実行方法
C:¥> jython Hello.py
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, AWT World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, Java 3D(JRuby) World!
Posted on 11月 24th, 2012 by cx20
Java 3D
Java 3D は Java による 3D グラフィックライブラリである。
以下は JRuby による Java 3D の使用例となっている。ソースコード
require 'java' import 'java.awt.BorderLayout' import 'java.awt.GraphicsConfiguration' import 'java.awt.Font' import 'javax.media.j3d.Canvas3D' import 'javax.media.j3d.BranchGroup' import 'javax.media.j3d.Transform3D' import 'javax.media.j3d.TransformGroup' import 'javax.media.j3d.Appearance' import 'javax.media.j3d.Material' import 'javax.media.j3d.Font3D' import 'javax.media.j3d.FontExtrusion' import 'javax.media.j3d.Text3D' import 'javax.media.j3d.Shape3D' import 'javax.media.j3d.DirectionalLight' import 'javax.media.j3d.RotationInterpolator' import 'javax.media.j3d.Alpha' import 'javax.media.j3d.BoundingSphere' import 'javax.swing.JFrame' import 'javax.vecmath.Vector3f' import 'javax.vecmath.Color3f' import 'com.sun.j3d.utils.universe.SimpleUniverse' class HelloFrame < JFrame def initialize( title ) super(title) self.setSize(640, 480) self.setDefaultCloseOperation( JFrame::EXIT_ON_CLOSE ) @canvas3D = createCanvas3D() @scene = createSceneGraph() connect(@canvas3D, @scene) end def createCanvas3D() getContentPane().setLayout(BorderLayout.new()) @config = SimpleUniverse.getPreferredConfiguration() @canvas3D = Canvas3D.new(@config) getContentPane().add(@canvas3D) return @canvas3D end def createSceneGraph() @objRoot = BranchGroup.new() @mover = moveTextBack() @spinner = createSpinner() @rotator = RotationInterpolator.new(Alpha.new(-1, 4000), @spinner, Transform3D.new(), 0.0, Math::PI * 2) @rotator.setSchedulingBounds( BoundingSphere.new() ) @spinner.addChild(@rotator) @objRoot.addChild(@mover) @mover.addChild(@spinner) @spinner.addChild( createTextShape()) setLighting(@mover) return @objRoot end def createSpinner() @spinner = TransformGroup.new() @spinner.setCapability(TransformGroup::ALLOW_TRANSFORM_WRITE) return @spinner end def moveTextBack() @transform3D = Transform3D.new() @transform3D.setTranslation(Vector3f.new(0.0, 0.0, -10.0)) return TransformGroup.new(@transform3D) end def createTextShape() @textAppear = Appearance.new() @textAppear.setMaterial(Material.new()) @font3D = Font3D.new(Font.new("MS Pゴシック", Font::PLAIN, 1), FontExtrusion.new()) @textGeom = Text3D.new(@font3D, String.new("Hello, Java 3D World!")) @textGeom.setAlignment(Text3D::ALIGN_CENTER) @textShape = Shape3D.new() @textShape.setGeometry(@textGeom) @textShape.setAppearance(@textAppear) return @textShape end def setLighting(objMove) @light = DirectionalLight.new() @light.setInfluencingBounds(BoundingSphere.new()) @light.setDirection(Vector3f.new(0.0,0.0,-1.0)) @light.setColor(Color3f.new(1.0, 1.0, 1.0)) objMove.addChild(@light) end def connect(canvas3D, scene) @universe = SimpleUniverse.new(canvas3D) @universe.getViewingPlatform().setNominalViewingTransform() @universe.addBranchGraph(scene) end end @frame = HelloFrame.new("Hello, World") @frame.setVisible(true)
実行方法
C:¥> jrubyw Hello.rb
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, Java 3D World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, Java 2D(JRuby) World!
Posted on 11月 23rd, 2012 by cx20
Java 2D
Java 2D は Java による 2D グラフィックライブラリである。
以下は JRuby による Java 2D の使用例となっている。ソースコード
require 'java' import 'java.awt.Graphics' import 'java.awt.Graphics2D' import 'javax.swing.JFrame' import 'javax.swing.JPanel' class HelloFrame < JFrame def initialize( title ) super( title ) self.setDefaultCloseOperation(JFrame::EXIT_ON_CLOSE) self.setSize(640, 480) @panel = HelloPanel.new() add( @panel ) end end class HelloPanel < JPanel def paintComponent(g) @g2 = g @g2.drawString("Hello, Java2D World!", 0, 16) end end @frame = HelloFrame.new("Hello, World") @frame.setVisible(true)
コンパイル&実行方法
C:¥> jrubyw Hello.rb
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, Java 2D World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, JavaFX(JRuby) World!
Posted on 11月 22nd, 2012 by cx20
JavaFX(Scala)
JavaFX は Java による RIA 向けの GUI ライブラリならびにプラットフォームである。
類似の RIA プラットフォームとしては Adobe Flex や Microsoft Silverlight などがある。
以下は JRuby にて JRubyFX ライブラリを用いた JavaFX の使用例となっている。ソースコード
require 'jrubyfx' class Hello include JRubyFX def start(stage) hbox = HBox.new hbox.children << Label.new("Hello, JavaFX World!") stage.scene = Scene.new(hbox, 640, 480) stage.title = "Hello, World" stage.show end end Hello.start
実行方法
C:¥> jruby --1.9 Hello.rb
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, JavaFX World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, SWT(JRuby) World!
Posted on 11月 21st, 2012 by cx20
SWT(JRuby)
SWT(Standard Widget Toolkit) は Java で GUI を扱うためのライブラリである。
IBM により AWT や Swing を置き換える目的で作成された。
以下は JRuby による SWT の使用例となっている。ソースコード
require 'java' require 'org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar' import 'org.eclipse.swt.SWT' import 'org.eclipse.swt.widgets.Display' import 'org.eclipse.swt.widgets.Shell' import 'org.eclipse.swt.widgets.Label' import 'org.eclipse.swt.layout.FillLayout' @display = Display.new @shell = Shell.new(display) @shell.setText("Hello, World") @layout = FillLayout.new(SWT::VERTICAL) @shell.setLayout(@layout) @label = Label.new(@shell,SWT::BORDER) @label.setText("Hello, SWT World!") @shell.setSize( 640, 480 ) @shell.open while (!@shell.isDisposed) do if (!@display.readAndDispatch) then @display.sleep end end @display.dispose
実行方法
C:¥> jrubyw Hello.rb
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, SWT World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
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! | | | | | | | | | | | | | | | | | | | +------------------------------------------+