カラーチューザーをダイアログとして表示する
カラーチューザーはコンポーネントとして配置する以外にダイアログとして表示するためのメソッドが用意されています。ダイアログとして表示した場合はダイアログが閉じた時の戻り値として選択された色を取得できます。
ダイアログとして表示するにはJColorChooserクラスの親クラスで用意されている「showDialog」メソッドを使います。
public static Color showDialog(Component component, String title, Color initialColor) throws HeadlessException
モーダルなカラーチューザダイアログを表示し、ダイアログが隠されるまでブ ロックします。ユーザーが [OK] ボタンを押すと、このメソッドはダイアログ を隠すかまたは破棄し、選択された色を返します。ユーザーが [Cancel] ボタ ンを押すか、あるいは [OK] を押さないでダイアログを閉じると、このメソッ ドはダイアログを隠すかまたは破棄し、null を返します。 パラメータ: component - ダイアログの親 Component title - ダイアログのタイトルを含む文字列 initialColor - カラーチューザが表示されるときの初期色のセット 戻り値: 選択された色。ユーザーが中止した場合は null 例外: HeadlessException - GraphicsEnvironment.isHeadless() が true を返す場合
1番目の引数にダイアログを表示するための親フレームを指定します。例えばJFrameクラスのオブジェクトを指定して下さい。
2番目の引数にはダイアログのタイトルをString型の値で指定します。
3番目の引数にカラーチューザーが作成された時に初期値として選択したい色を表すColorクラスのオブジェクトを指定します。Colorクラスについては『Colorクラス』を参照して下さい。
戻り値にはカラーチューザーダイアログで選択した色を表すColorクラスのオブジェクトを取得できます。「取消し」ボタンがクリックされた場合やダイアログの右上の「×」ボタンをクリックしてダイアログが閉じられた場合は「null」が取得されます。
実際の使い方は次のようになります。
JColorChooser colorchooser = new JColorChooser(); Color color = colorchooser.showDialog(this, "色の選択", Color.white);
サンプルプログラム
では簡単なサンプルを作成して試してみます。
import javax.swing.*; import java.awt.Color; import java.awt.BorderLayout; import java.awt.event.*; public class JColorChooserTest5 extends JFrame implements ActionListener{ JPanel p; public static void main(String[] args){ JColorChooserTest5 frame = new JColorChooserTest5(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10, 300, 200); frame.setTitle("タイトル"); frame.setVisible(true); } JColorChooserTest5(){ JButton button = new JButton("color"); button.addActionListener(this); p = new JPanel(); p.add(button); getContentPane().add(p, BorderLayout.CENTER); } public void actionPerformed(ActionEvent e){ JColorChooser colorchooser = new JColorChooser(); Color color = colorchooser.showDialog(this, "色の選択", Color.white); if(color != null){ p.setBackground(color); } } }
上記をコンパイルした後で実行すると次のように表示されます。
ボタンをクリックするとカラーチューザーをダイアログとして表示します。
色を選択して「了解」ボタンをクリックすると、親フレームに配置されたパネルの背景色が選択された色に変更されます。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。