#目次
- はじめに
- 実装
3. 概要
4. レイアウト
5.JOptionPane.showConfirmDialog();
を扱う - おわりに
#はじめに
processingでexit();
処理を行う前に選択ダイアログで確認をしようとした際に、方法がわからずつまずきました…
(こういうやつですよね↓)
調べても簡潔に説明しているページがなかったため、超初心者の自分用にまとめました。今回はJavaのSwingのJOptionPane
クラスを使用しました。
processingのバージョンは3.3.4です。
#実装
import java.awt.*;
import javax.swing.*;
JPanel panel = new JPanel(); //パネルを作成
BoxLayout layout = new BoxLayout( panel, BoxLayout.Y_AXIS ); //メッセージのレイアウトを決定
void setup(){
panel.setLayout(layout); //panelにlayoutを適用
panel.add( new JLabel( "終わりますか?" ) ); //メッセージ内容を文字列のコンポーネントとしてパネルに追加
}
void draw(){
int r = JOptionPane.showConfirmDialog(
null, //親フレームの指定
panel, //パネルの指定
"hogehoge", //タイトルバーに表示する内容
JOptionPane.YES_NO_OPTION, //オプションタイプをYES,NOにする
JOptionPane.INFORMATION_MESSAGE //メッセージタイプをInformationにする
);
if ( r == 0 ) {
//YESが選択された場合の処理
} else if ( r == 1 ) {
//NOが選択された場合の処理
}
}
上記のコードで以下のようなダイアログメッセージが表示されます。
##1. 概要
####- JPanel
クラスでパネルを作成
####- BoxLayout
クラスでパネルにレイアウトを指定
JPanel
クラスのsetLayout();
メソッドを使用して指定します。void setup()
の中に書く必要があります。
####- JLabel
クラスでパネルに文字列コンポーネントを追加
JPanel
クラスのadd();
メソッドでパネルにコンポーネントを追加します。今回はメッセージなので文字列です。void setup()
の中に書く必要があります。
####- JOptionPane
クラスのshowConfirmDialog();
メソッドを用いてオプションタイプとメッセージタイプを指定
後に詳しく書きます。
##2. レイアウト
BoxLayout
クラスがこれに当たります。上記のコードで使用しているパラメータのBoxLayout.Y_AXIS
では、コンポーネントを上から下に配置します。
BoxLayout
クラスについての詳しい説明は以下の記事を参考にされると良いと思います。
BoxLayoutクラス - Swing - JavaDrive
https://www.javadrive.jp/tutorial/boxlayout/
##3. JOptionPane.showConfirmDialog();
を扱う
JOptionPane.showConfirmDialog(引数1,引数2,引数3,引数4,引数5);
各引数、返り値について触れます。
####引数1
ダイアログを表示するための親フレームを指定します。上記のコードでは、選択ダイアログのみを表示するので、親フレームはなく、null
をいれました。
####引数2
ここでパネルを指定します。これまでに.setLayout();
でレイアウトを決定、.add();
で文字列のコンポーネントを追加させたパネルを指定します。上記のコードではpanel
が該当します。
####引数3
ダイアログのタイトルを指定します。String型の値を用います。
####引数4
オプションタイプ(YESorNO、はいor取消といった選択肢のボタン)の指定をします。上記のコードではJOptionPane.YES_NO_OPTION
というパラメータで、選択肢がYESとNOになっています。
パラメータと表示されるボタンの関係は以下の通りです。
パラメータ | 表示されるボタン |
---|---|
JOptionPane.YES_NO_OPTION | YES/NO |
JOptionPane.YES_NO_CANCEL_OPTION | YES/NO/取消 |
JOptionPane.OK_CANCEL_OPTION | OK/取消 |
####引数5
ダイアログのメッセージタイプ(選択ダイアログの中にある「警告」や「情報」などの種類)を指定します。上記のコードに書かれているパラメータJOptionPane.INFORMATION_MESSAGE
は、この種類を「情報」に指定します。
パラメータとメッセージタイプの関係は以下の表の通りです。
パラメータ | メッセージタイプ |
---|---|
JOptionPane.ERROR_MESSAGE | エラーメッセージ |
JOptionPane.INFORMATION_MESSAGE | 情報メッセージ |
JOptionPane.WARNING_MESSAGE | 警告メッセージ |
JOptionPane.QUESTION_MESSAGE | 質問メッセージ |
JOptionPane.PLAIN_MESSAGE | アイコン非表示 |
####返り値
返り値はint型の値として返されます。上記のコードではr
に格納されます。
選択ボタンと返り値の関係は以下の表の通りです。
選択したボタン | 返り値 |
---|---|
OK | 0 |
YES | 0 |
NO | 1 |
取消 | 2 |
以下は私が参考にさせていただいたサイトです。詳細についてはこのサイト参照していただけると良いと思います。
メッセージタイプを指定して選択ダイアログを表示する - JOptionPaneクラス - Swing - JavaDrive
https://www.javadrive.jp/tutorial/joptionpane/index7.html
#おわりに
いかがでしたでしょうか?
選択ダイアログを表示するには、毎回JOptionPane.showConfirmDialog();
を実行し、int型変数に値を代入し直さなければいけません。当然ですが、上記のコードのようにvoid draw()
直下に書いてしまうと、draw()
が実行される度にダイアログが表示されてしまいプログラムが止まってしまうため、書く場所には気を付けます。
はじめて記事を書いたため、至らない点があるとは思いますが、その際はご指摘いただけると嬉しいです。ありがとうございました。