こんにちは。ハンドルネーム「Javaを復習する初心者」です。このサイトはプログラミング言語Javaの復習・学習をするブログです。プログラムの開発・実行はEclipseで行ってます。
スポンサーリンク
お知らせ
  • 参考文献のページ作りました。
  • Amazon.co.jpアソシエイトに参加していますが、参考文献の紹介はもしもアフィリエイトに統一しました。
  • 2016年10月9日からは投稿ペースを落とします。週1回くらいにする予定です。
スポンサーリンク

SwingのJColorChooser、JFileChooser

こんにちは。「Javaを復習する初心者」です。今回はSwingのJColorChooser、JFileChooserを使ってみました。

JColorChooserはユーザーに色を選択してもらう場合に使います。JFileChooserはユーザーにファイルを選択してもらう場合に使います。

以下のプログラムを雛形として使います。

import javax.swing.JFrame;

public class Test extends JFrame {

    public static void main(String[] args) {
        new Test();
    }

    public Test() {
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(350, 250);

        init();

        setVisible(true);

    }

    private void init() {
        // 設置処理
    }

}

JColorChooser

フレームに追加する

JColorChooserはダイアログ出力をして使うのが通常の使い方のようですが、JFrameに追加することが可能です。以下は、JFrameへの追加例です。

    private void init() {
        // 設置処理
        setLayout(new FlowLayout());

        JColorChooser colorChooser = new JColorChooser();
        add(colorChooser);
    }

雛形の方で、setSize(350, 250)で大きさを指定しているのですが、縦横ともに足りませんでした。以下のキャプチャではフレームのサイズを調節してJColorChooser全体が表示されるようにしています。

初期表示は「サンプル」タブが選択されています。「RGB」タブを選択すると、以下のようにスライダーで色選択ができる画面が表示されます。

ダイアログ表示

ダイアログ表示の場合、staticメソッドが用意されています。showDialogというメソッドで、Colorが戻り値です。引数は順に以下です。

  • Component – ダイアログの親Component
  • String – ダイアログのタイトルを含む文字列
  • Color – カラー・チューザが表示されるときの初期色のセット

例えば、以下のようにボタンが押されたらダイアログを表示するのが一般的だと思います。

    private void init() {
        // 設置処理
        setLayout(new FlowLayout());

        JButton button = new JButton("ボタン");
        add(button);

        button.addActionListener(event -> {
            Color color = JColorChooser.showDialog(this, "色選択", null);
            System.out.println(color);
        });
    }

表示されるダイアログの下の方には、ボタンが3つの追加されています。取消ボタンが押下されると、showDialog()メソッドはnullを返却します。上記サンプルでは返却されたColorオブジェクトを標準出力に表示しているだけです。大抵は、返却されたColorオブジェクトを使って、あるコンポーネントの文字色や背景色を設定するという処理を記述すると思います。

showDialog()メソッドの第3引数はダイアログ表示されたときに選択済みの色を指定します。nullの場合は白(R, G, Bそれぞれの値が255)が選択されました。

RGBそれぞれ20、30、40を初期値にする場合は以下のように指定します。

            Color color = JColorChooser.showDialog(this, "色選択", new Color(20, 30, 40));

JFileChooser

フレームに追加する

JFileChooserは選択ダイアログとして使うのが普通の使い方のようですが、JFrameに追加することが可能です。実際にやってみたのですが、雛形のsetSize(350, 250)では少し大きさが足りませんでした。以下にキャプチャを貼っていますが、大きさは調節しています。また、フォルダの初期値はwindowsではログインユーザーのドキュメントフォルダになるようです。余計なフォルダやファイルがあったので、以下のキャプチャではC:\testフォルダを作ってそこを表示しています。

ダイアログ表示

ダイアログでファイル選択ができるメソッドが用意されています。showOpenDialog(Component parent)を使います。parentは親コンポーネントを指定します。このメソッドの戻り値はint型で、JFileChooserで定義された以下の定数が返却されます。

  • JFileChooser.CANCEL_OPTION – 取り消し
  • JFileChooser.APPROVE_OPTION – ファイルが選択された
  • JFileCHooser.ERROR_OPTION – エラー

ERROR_OPTIONが返却されるパターンはよくわかりませんでした。存在しないファイル名を入力してもAPPROVE_OPTIONが返却されます。

実際に選択されたファイルはgetSelectedFile()メソッドで取得できます。

例えば、次のようにボタンのイベントでダイアログ表示をします。

    private void init() {
        // 設置処理
        setLayout(new FlowLayout());

        JButton button = new JButton("ボタン");
        add(button);

        button.addActionListener(event -> {
            JFileChooser fileChooser = new JFileChooser();
            int value = fileChooser.showOpenDialog(this);
            if (value == JFileChooser.APPROVE_OPTION) {
                System.out.println(fileChooser.getSelectedFile());
            }
        });
    }

ダイアログのファイル名に「aaaaaaa」と入力して開くダイアログを押下するとコンソールに「C:\Users\user\Documents\aaaaaaa」と表示されます。実際にファイルが存在しなくてもAPPROVE_OPTIONが返却されました。そのため、ファイルの存在チェックは別途必要です。