前回 JFileChooser の使い方を見ましたが、JFileChooser やったら次は JColorChooser でしょっ!ってことで JColorChooser の使い方を見ていこうかと。
参考 URL:
JColorChooser って、名前が JFileChooser に似てるので使い方も同じようなものかと思ってたら、なんか全然感じが違うのでちょっと戸惑い。 カスタマイズせずに使う分には showDialog() メソッドを使えば良いようですが、JFileChooser と違ってこれは static メソッドなのが要注意。 JFileChooser というより JOptionPane に近い API のようです。 JColorChooser のインスタンスを使用するサンプルは面倒そうなのでスルー(Groovy のサンプルで少し触れますが)。
まぁ、とりあえず JColorChooser がどんなのか見ておきましょう。 JColorChooser にはデフォルトで次の3つの選択方法が用意されてます:
各選択方法はタブによって切り替えられます。 まぁ、スタンダードな色選択ですね。
サンプルコード
では、サンプルコード。
Java
まずは Java コード。 普通に使う分には JColorChooser の static メソッド showDialog() を呼び出すだけです。
import java.awt.Color; import javax.swing.JColorChooser; JFrame parent = ...; Color color = JColorChooser.showDialog(parent, "JColorChooser", Color.WHITE); if(color != null){ System.out.println(color); }
- 第1引数は親コンポーネント。 null でも OK。
- 第2引数はダイアログのタイトル。
- 第3引数は初期選択の色。
- 返り値の Color オブジェクトは選択された色に対応する Color オブジェクトです。 キャンセルされたりダイアログが×で閉じられたりした場合は null が返されます。
Groovy + SwingBuilder
次は Groovy コード。 といっても showDialog() メソッドが static なので、あまり Java コードに比べて簡単になりません:
import java.awt.Color import javax.swing.JColorChooser def parent = ... def color = JColorChooser.showDialog(parent, 'JColorChooser', Color.WHITE) if(color != null){ println color }
Groovy + SwingBuilder 〜埋め込み編〜
上記のGroovy の例ではちょっと寂しいので、Groovy の別のサンプル。 JColorChooser は JComponent のサブクラスなので、普通に JPanel や JFrame に埋め込むことができます。 なので、JFrame に JColorChooser を埋め込んで表示させるサンプルを見てみましょう。 このときは JColorChooser のインスタンス化が必要なので、SwingBuilder に対して colorChooser() を呼び出してます。
import groovy.swing.SwingBuilder import javax.swing.JFrame import javax.swing.event.ChangeListener def builder = new SwingBuilder() def frame = builder.frame( title:'JColorChooser', size:[500, 400], defaultCloseOperation:JFrame.EXIT_ON_CLOSE){ colorChooser(id:'cc') } builder.cc.selectionModel.addChangeListener({ evt -> println evt.source.selectedColor } as ChangeListener) frame.visible = true
この埋め込みのサンプルでは、「了解」、「キャンセル」などのボタンは表示されない(これらは JColorChooser の一部でない)ので、大抵の場合、別途 ChangeListener を加える必要があります。
ちなみに 前回触れませんでしたが、SwingBuilder に対して fileChooser() を呼び出せば JFileChooser も同様に埋め込むことができます。
3rd パーティ製の Look & Feel
JColorChooser は 3rd パーティ製の Look & Feel で独自のものをサポートしてくれてるものもあるようで、たとえば Substance の Look & Feel を用いると、こんな JColorChooser が使えます:
な!? なんだ?この完成度!! デフォルトの JColorChooser が子供のオモチャに見える!
Java Swing Hacks ―今日から使える驚きのGUIプログラミング集
- 作者: Joshua Marinacci,Chris Adamson,神戸博之(監訳),島田秋雄(監訳),加藤慶彦
- 出版社/メーカー: オライリージャパン
- 発売日: 2006/04/01
- メディア: 単行本(ソフトカバー)
- 購入: 7人 クリック: 100回
- この商品を含むブログ (38件) を見る