カラーチューザ


色の選択

ユーザーに、何らかの色を選択してほしい場合
Swing は色選択用のコンポーネントであるカラーチューザを提供しています
カラーチューザは javax.swing.JColorChooser クラスを使います
java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JColorChooser

public class JColorChooser 
	extends JComponent implements Accessible
このクラスのコンストラクタは、次のようなものがあります

public JColorChooser()
public JColorChooser(Color initialColor)
public JColorChooser(ColorSelectionModel model)

initialColor はチューザが設定している初期色を指定します
デフォルトでは、白が初期色として設定されています
model には、カラーチューザが参照する ColorSelectionModel の実体を指定します

javax.swing.colorchooser.ColorSelectionModel インターフェイスは
色の選択をサポートするためのモデル要素を宣言しています

public interface ColorSelectionModel

このインターフェイスには、色の設定と取得を行うための
ColorSelectionModel.setSelectedColor()
ColorSelectionModel.getSelectedColor() メソッドが宣言されています
また、色が変更された時に発生するイベントを得るために
ColorSelectionModel.addChangeListener() メソッドと
解除用の ColorSelectionModel.removeChangeListener() メソッドがあります

public Color getSelectedColor()
public void setSelectedColor(Color color)
public void addChangeListener(ChangeListener listener)
public void removeChangeListener(ChangeListener listener)

color には選択された色を指定します
listener は追加、または解除するリスナを指定します

カラーチューザの色を選択するには JColorChooser.setColor()
色を取得するには JColorChooser.getColor() メソッドを使います

public void setColor(Color color)
public void setColor(int r , int g , int b)
public void setColor(int c)
public Color getColor()

color には設定するカラーオブジェクトを
r には赤要素、g には緑要素、b には青要素を 0 〜 255 までの範囲で指定します
c には、下位から8ビットごとに青、緑、赤の順で色要素が格納された整数を指定します
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.colorchooser.*;

public class Test extends JApplet implements ColorSelectionModel {
	JLabel label = new JLabel("Kitty on your lap");
	JColorChooser chooser;
	Color color = Color.WHITE;

	public void init() {
		chooser= new JColorChooser(this);
		getContentPane().add(chooser , BorderLayout.CENTER);
		getContentPane().add(label , BorderLayout.NORTH);
	}
	public Color getSelectedColor() { return color; }
	public void setSelectedColor(Color color) {
		this.color = color;
		label.setForeground(color);
	}
	public void addChangeListener(ChangeListener listener) {}
	public void removeChangeListener(ChangeListener listener) {}
}


このプログラムでは、カラーチューザをアプレットに追加しています
ColorSelectionModel インターフェイスを実装し、これをチューザに登録します
チューザは初期色として getSelectionColor() を参照したり
色の変更に対して setSelectionColor() を呼び出してくれます
このプログラムでは、使う必要がないのでリスナの登録処理は省略しました

一般的には、カラーチューザはダイアログとして利用されることでしょう
カラーチューザのダイアログは JColorChooser.createDialog() で生成するか
JColorChooser.showDialog() で表示するかのいずれかの手段になります
public static JDialog createDialog(
	Component c , String title , boolean modal ,
	JColorChooser chooserPane ,
	ActionListener okListener ,
	ActionListener cancelListener
) throws HeadlessException

public static Color showDialog(
	Component component ,
	String title , Color initialColor
) throws HeadlessException
c 及び component には親となるコンポーネントを
title には、ダイアログのタイトルバーに表示されるテキストを指定します

modal が true であればモーダルに、false であればモードレスになります
chooserPane はダイアログに表示されるカラーチューザを指定します
okListener は OK ボタンが押された時に呼び出されるリスナを
cancelListener には Cancel ボタンが押された時に呼び出されるリスナを指定します

initialColor は、カラーチューザの初期色を指定してください

createDialog() メソッドは、ダイアログを生成して JDialog を返します
これに対し showDialog() は即座にカラーチューザのダイアログを表示します
showDialog() メソッドは、選択された色を返します
import java.awt.*;
import javax.swing.*;

public class Test extends JApplet {
	public void init() {
		Color color = JColorChooser.showDialog(
			this , "色の選択" , Color.BLACK
		);
		getContentPane().setBackground(color);
	}
}
このプログラムは、起動時にカラーチューザのダイアログを表示し
アプレットの背景色をユーザーに選択させるというものです



前のページへ戻る次のページへ