3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者】JRubyによるJavaFX(FXML)アプリの基本

3
Last updated at Posted at 2026-02-23

動機

今どき、JavaやRubyでGUIのデスクトップアプリを作りたいという人は少ないかもしれませんが、CUIコマンドの引数指定を忘れた時、GUI画面があったほうがいいと思うことがあります。(Tcl/Tkで作っていた人もいたかもしれません)

Javaには、Swing、JavaFX、SWTという優れたフレームワークがありますが、ちょこちょこ修正するかもしれないことを考えると、スクリプト言語の気軽さと、使い慣れたJavaのライブラリーを組み合わせたいと思い、サンプルを作ってみました。

JRubyでJavaFXを利用すると、Rubyの手軽さと、JavaFXの美しさ、Javaの豊富なライブラリーのいいとこ取りをすることができます。

環境構築

JDK

JavaFXを利用することにします。

今は、OpenJDKなどにはJavaFXが組み込まれていません。簡単に導入するとなると、bellsoftのLiberica JDK(FULL)が手っ取り早いと思います。こちらからダウンロードしてください。https://bell-sw.com/pages/downloads/#jdk-25-lts

ダウンロードする時、以下のようにパッケージを選択できます。「FULL JDK」を選択すると、JavaFXが組み込まれたものを入手できます。

image.png

javaコマンドのあるディレクトリをPATHに通せばOKです。

JRuby

https://www.jruby.org/download からダウンロードします。

自分は、取り扱いが楽なことを想定し、Complete版を使います。 https://repo1.maven.org/maven2/org/jruby/jruby-complete/10.0.3.0/jruby-complete-10.0.3.0.jar

GEM_HOMEの設定

自分は、RubyとJRubyのどちらも利用しています。その場合、バージョンの違いによってパッケージが衝突することがあるので、JRubyのGEMは、$(HOME)/JGEMにいれるようにしています。このため、起動するときは、(Linuxの場合)

GEM_HOME=/home/XXX/JGEM java -jar jruby-complete-10.0.3.0.jar -S .....

のように指定します。

JavaFXを利用するためのgem

以下でインストールできます

GEM_HOME=/home/XXX/JGEM java -jar jruby-complete-10.0.3.0.jar -S gem install jrubyfx

実際のコード

以下の2つのファイルを jruby-fxml.rb、Hello.fxmlなどとして同じディレクトリに保存します。

Rubyスクリプト

require 'jrubyfx'

fxml_root File.dirname(__FILE__)

class HelloWorldApp < JRubyFX::Application
  def start(stage)
    with(stage, title: "JrubyによるFXMLテストアプリ", width: 800, height: 600) do
      fxml HelloWorldController
      show
    end
  end
end

class HelloWorldController
  include JRubyFX::Controller
  fxml "Hello.fxml"
  
  def say_clicked
    @hello_label.text = "ありがとうございます"
  end
end

HelloWorldApp.launch

FXMLファイル

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<?import javafx.scene.text.*?>

<VBox alignment="CENTER" xmlns:fx="http://javafx.com/fxml">
  <children>
    <Label fx:id="hello_label" text="こんにちは!" underline="true">
      <font>
	<Font size="66.0" />
      </font>
    </Label>
    <Button mnemonicParsing="false" onAction="#say_clicked" prefHeight="49.0" prefWidth="166.0" text="押して!!">
      <font>
	<Font size="23.0" />
      </font>
    </Button>
  </children>
</VBox>

起動

以下のように起動します。

GEM_HOME=/home/XXX/JGEM java -jar jruby-complete-10.0.3.0.jar -S jruby-fxml.rb

image.png

ボタンをクリックすると

image.png

最後に

FXMLは、JavaFX Scene Builderで作れます。

JavaFXが、多くの優れたJavaライブラリーとともに、さまざまな業務アプリで利用されるといいなと思っています。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?