アンケートご協力のお願いgihyo.jpでは,2010年度に向けて豪華プレゼントが当たる読者属性アンケートを実施しております。ご協力ください。

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で取り上げてほしいネタは?

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

その他の連載

使ってみよう! Windows Live SDK/API

Windows Liveサービスの一部にはAPIやSDKとして提供されているものがあります。本連載では各API・SDKの紹介とそれらを利用したアプリケーションを開発していきます。

Lifelog~毎日保存したログから見えてくる個性

コンピュータを使って,日常のさまざまなことの記録(ログ)をとり,それを分析して活用することで,もう一段階上の「楽な生活」をめざす日々の研究報告です。

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

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

Ruby Freaks Lounge

Rubyに関わる,執筆者自身の旬なテーマを扱った,リレー形式の連載です。

これでできる! クロスブラウザJavaScript入門

JavaScriptはウェブ制作において避けては通れない重要な言語ですが,JavaScriptに苦手意識を持たれている方は少なくないようです。 その最大の原因がクロスブラウザ対応という課題であり,本連載ではクロスブラウザ対応のテクニックを詳細に解説します。

ビジネスで成功するためのシステム運用管理のポイント

システムの多様化,技術進歩に伴い,ITシステムの運用管理の必要性が年々高まっています。本連載では,システムの運用管理とは何かについて,現場のニーズと具体的な指針を押さえながらを解説します。

2010年版SEO体得講座

本連載では,いまや企業サイトの戦略の1つとして欠かすことのできないSEOについて,最新トレンドからすぐに使えるTipsまでを紹介します。

小型Linuxサーバの最高峰 OpenBlockS 600活用指南

搭載メモリの増加,CPUクロックの向上など,あらゆる面が強化された期待の新モデルOpenBlockS 600。この記事ではOpenBlockS 600の紹介から,活用するためのさまざまなノウハウを紹介していきます。

連載一覧

gihyo.jp

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

書籍案内

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

定期刊行物一覧

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