その漫画自炊オタクはImageJマクロに恋をする

プログラミングを用いた、自炊漫画の画像処理

【ImageJマクロ超入門】#9 情報入力ダイアログの作り方

 

f:id:yu3xx:20210515005746j:plain




 

皆さまこんにちは。

yu3xx(ゆーさんちょめちょめ)です。

 

 

 

前回のおさらい


 

前回は「二次元画像からピクセル値を直接拾って解析する方法」を紹介しました。

今回は「情報入力ダイアログを自分で作ってみよう!」です。


もくじ

 

 

 

情報入力ダイアログで出来ること

f:id:yu3xx:20210515020157p:plain

情報入力ダイアログを表示すると、解析や処理に必要な情報を一括で入力することが出来ます。

 

以前「ifで条件分岐」の回で「a = getNumber(Label,Default)」のカタチでの「数値入力ダイアログ」の紹介もしました。この数値入力ダイアログは簡便なので使いやすいのですが、1つのダイアログに1つの情報しか入力することが出来ません

 

ですので、複数の情報を入力したいときは今回お話しする「情報入力ダイアログ」を使うと便利です。

 

作り方

 

ダイアログ関係のコードは少しクセがあります。

 

ダイアログ呼び出しから情報取得までの流れ
 ① ダイアログ作成開始の命令
 ② 表示項目や入力させたい内容をまとめて設定
 ③ ダイアログを表示させ、ユーザーが入力
 ④ ダイアログに入力した情報をまとめて変数に取得

 

コードで表すと、
 ① Dialog.create
 ② Dialog.addなにがし
 ③ Dialog.show
 ④ Dialog.getなにがし


細かく解説していきます。

 

① ダイアログ作成開始の命令

Dialog.create("文章");
・ダイアログウィンドウのタイトル設定にあたる

 

② 表示項目や入力させたい内容をまとめて設定

入力したい情報や、入力形式によって命令が異なります。


Dialog.addMessage("文章");
・文章を表示させるだけ。入力は無し。コメントとして使う

 

Dialog.addString("文章",初期値);
・文字列の入力領域を表示

 

Dialog.addNumber("文章",初期値);
・数値を入力領域を表示

 

Dialog.addChoice("文章",items);
・プルダウン式の入力領域を表示。あらかじめプルダウンの項目を格納した配列(items)を作成しておく

 

Dialog.addRadioButtonGroup("文章",items,行,列,初期値);
・どれか一つだけ選択するラジオボタンを表示。あらかじめラジオボタンの項目を格納した配列(items)を作成しておく。行と列はラジオボタンの配置の仕方

 

Dialog.addCheckbox("文章",初期値);
・チェック欄ボックスを表示。初期値は、チェック状態なら「true」、チェック無しなら「false」

 

 

③ ダイアログを表示させ、ユーザーが入力
Diaog.show;
・ここで初めてダイアログが表示され、このタイミングでユーザーが入力することになる

 

④ ダイアログに入力した情報をまとめて変数に取得

上の②で入力した命令に対応した「getなにがし」で入力情報を拾っていく


記述順で紐づくので、正しく取得するためには「getなにがし」の記述順は「addなにがし」と同じ順番にしなければいけない

 

Dialog.getString();
・addStringに対応。返り値は入力した文字列

 

Dialog.getNumber();
・addNumberに対応。返り値は入力した数値

 

Dialog.getChoice();
・addChoiceに対応。返り値は選択したitems内の要素

 

Dialog.getRadioButton();
・addRadioButtonGroupに対応。get側はGroupが付かないので注意。返り値は選択したitems内の要素

 

Dialog.getCheckbox();
・addCheckboxに対応。返り値はtrueなら「1」、falseなら「0」

 

では実例で確認してみましょう!

 

情報入力ダイアログのサンプルコード


//example 9

Dialog.create("Your Data")

Dialog.addMessage("Enter Your Personal Information");
Dialog.addString("Name","David Lynch");
Dialog.addNumber("Age",75);

items = newArray("Male","Female","Other");
Dialog.addChoice("Gender",items);

items2 = newArray("Cofee","Cherry Pie","Donut");
Dialog.addRadioButtonGroup("Favorite food",items2,3,1,"Cofee");

Dialog.addCheckbox("Smoking",true);


Dialog.show;


name = Dialog.getString();
age = Dialog.getNumber();
gender = Dialog.getChoice();
food = Dialog.getRadioButton();
smoking = Dialog.getCheckbox();

print("Name : ", name);
print("Age : ",age);
print("Gender : ",gender);
print("Favorite Food : ",food);
print("Smoking : ",smoking);

 

f:id:yu3xx:20210515021954p:plain
こんな感じです!

 

ダイアログ表示までの手続きが少し煩雑ですが、一括で情報を入力したい時にはぜひ試してみて下さい!

 

 

 


おしまい

 

 

 

 

 

・公開したマクロのまとめ

imagej-jisui.hatenablog.com