Groovy に内蔵されている GroovyConsole に使用されているアイコンが使えないかなぁと思って groovy-xxx.jar の中身を覗いてみると、まぁ当然かもしれないけど、groovy.ui.Console クラスのソース近辺にそれぞれの画像ファイルがありました。
画像ファイルは全て PNG ファイルで、
- groovy/ui
- groovy/ui/icons
の2つのフォルダに配置されていました。 ファイル一覧:
使ってみる
では、実際にこれらのアイコンを使ってみましょう。 上記のアイコンはシステムリソースなので、例えば以下のような、ClassLoader クラスの static メソッドで取得できます(システムリソースの読込方はこちらを参照):
java.io.InputStream ClassLoader.getSystemResourceAsStream(String name) java.net.URL ClassLoader.getSystemResource(String name)
どちらもメソッドの引数 (name) には上の表の「リソース名」を渡します。
ただ、アイコンの画像は GUI で使うのが常だと思うので、サンプルコードは SwingBuilder で使う方法を見ていきます(参考「SwingBuilder.imageIcon」)。 アイコンはツールバーに使うことが多いと思いますが(Groovy Console もそう)、ここでは普通のボタンにアイコンの画像を使ってみます(ツールバーもボタンなので使い方は同じ)。 ボタンに 'groovy/ui/ConsoleIcon.png' の画像を使うには
button icon:imageIcon(resource:'groovy/ui/ConsoleIcon.png') // もしくは // button icon:imageIcon(resource:'/groovy/ui/ConsoleIcon.png') // 違いは・・・?
とします。 システムリソースの画像を使用する場合は imageIcon に resource プロパティを指定します。 動くサンプルはこんな感じ:
import java.awt.BorderLayout as BL import javax.swing.WindowConstants as WC import groovy.swing.SwingBuilder def f = new SwingBuilder().frame( title:'Icons', pack:true, defaultCloseOperation:WC.EXIT_ON_CLOSE){ borderLayout() panel(constraints:BL.NORTH){ button 'ConsoleIcon.png', icon:imageIcon(resource:'groovy/ui/ConsoleIcon.png') } vbox{ imageButton(builder, 'arrow_redo.png') imageButton(builder, 'arrow_undo.png') imageButton(builder, 'book_next.png') imageButton(builder, 'book_previous.png') imageButton(builder, 'bullet_green.png') imageButton(builder, 'cross.png') imageButton(builder, 'cut.png') imageButton(builder, 'cut_red.png') imageButton(builder, 'disk.png') imageButton(builder, 'find.png') imageButton(builder, 'folder_page.png') imageButton(builder, 'page.png') imageButton(builder, 'page_copy.png') imageButton(builder, 'page_paste.png') imageButton(builder, 'script_go.png') imageButton(builder, 'text_replace.png') } } f.visible = true def imageButton(builder, String png){ builder.hbox{ button icon:builder.imageIcon(resource:'groovy/ui/icons/'+png) hglue() label png hglue() } }
レイアウトを気にしなければもっと簡単に書けますけどね。 実行結果はこうなります:
New/Open/Save や Cut/Copy/Paste などのよく使いそうなアイコンがあるのは結構有り難いっす。
- 作者: Dierk Konig,Andrew Glover,Paul King,Guillaume Laforge,Jon Skeet,杉浦孝,櫻井正樹,須江信洋,関谷和愛,佐野徹郎,寺沢尚史
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2008/09/27
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 146回
- この商品を含むブログ (121件) を見る