gihyo.jp » DEVELOPER STAGE » 連載 » ついにベールを脱いだJavaFX » 第6回 Swingのコンポーネント

ついにベールを脱いだJavaFX

第6回 Swingのコンポーネント

第4回でシェイプを扱いましたが,シェイプだけでGUIを作るのは片手落ちです。やはり,ボタンやメニュー,テーブルなどといったコンポーネントがないとGUIを構築するのは難しいですね。

第1回でJavaFXはSwingとJava2Dをベースに作られているということを述べました。そのため,このSwingのUIコンポーネントをJavaFXからでも使用できるのです。

とはいうものの,現状ではすべてのSwingコンポーネントを使えるわけではありません。特にメニューやテーブルが使えないのが痛いところです。すでにJavaFXはアップデートリリースされ,JavaFX 1.0 update 1になっています。update 1ではSwingコンポーネントの拡充は行われませんでしたが,今後拡充されていくと筆者は予想しています。

ということで,今回はJavaFXでSwingのコンポーネントを使用する方法について紹介していきます。なお,今回紹介するサンプルコードは以下よりダウンロードできます。

Swingのコンポーネントを使用する

まず,Swingのコンポーネントを単体で使用してみましょう。Swingのコンポーネントだからといって構える必要はありません。第4回のシェイプとほとんど変わりなく使用することができます。

まず,サンプルのためのプロジェクトをNetBeansで作成しましょう。NetBeansでJavaFXのプロジェクトを作成する方法は第4回を参照してください。ここでは,ボタンを例にしていくので,プロジェクト名をbuttonsampleとし,メインファイルは作成しないことにします。

プロジェクトが作成できたら,メインとなるスクリプトファイルを作成します。プロジェクトの一覧が表示されているペインで,buttonsampleを右クリックし,ポップアップメニューを表示させます。そして,メニューの中から[新規]→[Empty JavaFX File]を選択します。すると,ファイルを作成するダイアログが表示されるので,ファイル名を入力します。ここでは,プロジェクト名と同じbuttonsample.fxとしましょう。

空っぽのファイルが作成されたので,第4回と同じようにエディタの右側にあるコードパレットからStageをドラッグし,エディタ領域にドロップします。するとリスト1のようなコードが作成されます(コメントは省略してあります)。

リスト1

import javafx.stage.Stage;
import javafx.scene.Scene;
 
Stage {
    title: "MyApp"
    scene: Scene {
        width: 200
        height: 200
        content: [  ]
    }
}

さあ,これで準備完了です。さっそくSwingのコンポーネントをここに貼っていきましょう。この場合も,コードパレットを使用することができます。Swingのコンポーネントは図1に示したようにSwing Componentsカテゴリにあります。

図1 Swingコンポーネント

図1 Swingコンポーネント

ここではButtonをドラッグし,content: [ ]の括弧の中にドロップします(図2)。

図2 Buttonをドラッグ&ドロップ

図2 Buttonをドラッグ&ドロップ

Buttonをドロップすると,コードはリスト2のようになります(整形してあります)。

リスト2

import javafx.ext.swing.SwingButton;
import javafx.scene.Scene;
import javafx.stage.Stage;
 
Stage {
    title: "MyApp"
    scene: Scene {
        width: 200
        height: 200
        content: [
            SwingButton {
                text: "Button"
                action: function() {
 
                }
            }
        ]
    }
}

ここからわかることは,SwingのボタンはSwingButtonというクラスで表されるということ,またSwingButtonクラスはjavafx.ext.swingパッケージで定義されていることです。

JavaFX ScriptのAPIドキュメントを見るとわかりますが,他のSwingコンポーネントもjavafx.ext.swingパッケージで定義されており,それぞれSwingで始まる名前になっています。

それでは,この状態で実行してみましょう。もちろん,プレビューでもかまいません。実行結果を図3に示しました。

図3 buttonsampleの実行結果

図3 buttonsampleの実行結果

JavaFXをJava SE 6u10以降のバージョンで動作させると,Java SE 6u10で導入された新しいルック&フィールのNimbusが使用されます。そのため,見た目が今までのSwingコンポーネントとはちょっと違っています。最近の傾向であるグラデーションを多用したルック&フィールになっています。

それでは,このスクリプトを進化させていきましょう。デフォルトではtextアトリビュートとactionアトリビュートしか初期化されていないので,その他のアトリビュートを付け加えてみました。SwingButtonクラスのアトリビュートはSwingButtonクラスのAPIドキュメントを参照してください。

第3回で触れたシェイプも,ここで使用しているSwingButtonクラスもjavafx.scene.Nodeクラスのサブクラスです。そのため,シェイプで使用したアトリビュートの多くはSwingButtonクラスでも使用することができます。

リスト3のコードではwidth,height,translateX,translateY,fontの各アトリビュートに値を代入するようにしました。

リスト3

Stage {
    title: "Button Sample"
    scene: Scene {
        width: 140
        height: 100
        content: [
            SwingButton {
                text: "Click!"
                width: 100
                height: 60
                translateX: 20
                translateY: 20
                font: Font {
                    size: 24
                }
                action: function() {

                }
            }
        ]
    }
}

widthアトリビュートはコンポーネントの幅,heightアトリビュートは高さを表します。また,translateXはx軸方向のコンポーネントの移動量,同じくtranslateYはy軸方向の移動量になります。fontはボタンの文字を描画するフォントを指定します。また,ボタンに表示される文字列も変更しました。では,この状態で再び実行させてみましょう(図4)。

図4 アトリビュートを指定して実行

図4 アトリビュートを指定して実行

著者プロフィール

櫻庭祐一(さくらばゆういち)

横河電機に勤務するかたわらJava in the Boxにて新しい技術を追い続けています。JavaOneは今年で11年目。名実共にJavaOneフリークと化しています。

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

もっと便利に!jQueryでラクラクサイト制作(実践サンプル付き)

本連載では,実践サンプルとともに,jQueryを上手に活用してサイト制作の品質向上・効率化を実現するための実践テクニックを解説します。

サクセスストーリーに続く,快適サーバー運用管理のヒント!

サーバーを自社で運用管理するのはもう限界…。データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

続・先取り! Google Chrome Extensions

2010年1月のリリースが予定されているGoogle Chrome 4に搭載されるExtensionsについて,その詳細を先取りで解説します。最新情報から,ユーザースクリプトやテーマの作り方など関連情報もお届けします。

モダンPerlの世界へようこそ

この連載では,Perlの世代間ギャップに悩んでいる方に,いくらかの背景知識と,これだけは知っておいたほうがよいという最低限の慣用句をお届けします。

Hosting Department:ホスティングを活用するための基礎知識

本連載では,ホスティングサービスを活用する上で知っておきたい基礎知識を解説します。

Blogopolisから学ぶ計算幾何

計算幾何学は,図形に関するアルゴリズムを研究するコンピュータサイエンスの一分野です。本連載では,ビジュアルブログ検索エンジン「Blogopolis」で採用されている計算幾何のアプローチを例に取り上げながら,計算幾何の初歩を実践的に学習します。

Windows phoneアプリケーション開発入門

Windows Marcketplace for Mobileがサービス開始され,作成したアプリケーションを個人でも世界をターゲットに公開できる環境が整ってきました。これを機にWindows phoneアプリケーションの開発をしてみませんか?

いま,見ておきたいウェブサイト

この連載では,国内外の最新のウェブサイトを隔週更新で取り上げ,これら最新サイトの特徴や素晴らしい部分を,さまざまな角度から解説していきます。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス

最近のコメント