Q58:メニューを仕上げています。次の点をご教示おねがいします。
Q58-1:
@ラベルの文字色をある条件の下で変化させたい。(メニューの経過時間が120分を超えたら赤色、それまでは青色のように)
A起動して最初のページが開いたときにある特定のボタン(または特定のテキストフィールド)にカーソルを移して置きたい。
B伝播制御の理解:サンプルプログラムより
B-1 For:繰返しは、イベント伝播無視カウントを増減のための動作?
B-2 「受け取ったイベント」とは、直前のid9の操作(ボタンid6)で
設定された[無視モードの状態] のことでしょうか?
B-3 繰返し数指定のボタンid6を操作しない場合はイベント制御無視カウントは「0」ですか?このときに、デクリメントされた状態のイベント制御無視カウントはいくつになるのでしょうか(0のまま、マイナスでカウント)?また、イベント制御無視カウントの現在値はどのようにすれば、読み出せますか?
A58-1:
@ラベルに表示されている数字を取得して、[等価演算コンポーネント]で演算し、その数字が「120」の時に色を設定するようにします。
色の設定方法は主に以下の3つがあります。
1.色名で指定する(red,blueなど)
javaで定義されている13色の色名を使用できます。
例:「取得方法:固定値 メソッド/値:red」
値は『java.awt.Color[r=255,g=0,b=0]』といった表記に自動的に変わります。
2.RGB値で指定する
例:「取得方法:固定値 メソッド/値:java.awt.Color[r=255,g=0,b=0]」
3.[色選択ダイアログ]で選択した色を設定する
色は一回設定すると変わらないので、終了時あるいは起動時に最初に表示したい色に戻しておく必要があります。
A [テキストフィールド]、[数値入力フィールド]等には「入力フォーカスを設定する()」というメソッドが設けてあります。
[ボタン]等そのメソッドがないものは、「RequestFocus()」をお試し下さい。
「入力フォーカス」を設定するタイミングは、「フレームを表示する()」の後としてください。
色設定について簡単なサンプルを作りましたので、掲載致します。
関連ファイル:色設定.mzax (※このファイルは、ZIP形式に圧縮してあります。)
B-1 For:繰返しは、イベント伝播無視カウントを増減のための動作?
「メソッド:イベント無視カウントをインクリメントする」では無視カウントは「1」ずつ増していきますので、[数値入力フィールド]に入力された数値分増やすために[繰り返し制御(FOR)] を使っています。
B-2 サンプルでは[ボタン]の「アクションイベント」に接続して「メソッド:受け取ったイベントを発生させる」が実行されています。
この場合、『受け取ったイベント』は「アクションイベント」を指します。
例えば「データ更新イベント」に接続して上記メソッドを実行した場合、「データ更新イベント」を受け取ります。[イベント伝播制御]からは「データ更新イベント」を出し、起動メソッドの接続を行ってください。
サンプルでは「アクションイベント」を受け取ったので、[イベント伝播制御]から「アクションイベント」が出ています。
イベントが[イベント伝播制御]を通って、そのまま出て行くイメージです。
この時に「無視モード=true」であれば、イベントは出て行かない(伝播しない)ということになります。
B-3 残念ながら現在のところ「イベント制御無視カウント」の現在値を取得するメソッドはございません。
デクリメントするには、まず先にインクリメントをする必要があり、その分だけしかデクリメントは効きません。
よってデクリメント分カウントがマイナスになることはありません。