イベントについて[Flex]
Flexをやる上で重要な要素になると思います。
結構使う機会の多いイベントをまとめます。
- <初期化イベント>
※自分自身の構築が終わっていても配下のコンポーネントの構築が
完了していない場合がある。null参照になる場合があるので注意
-
- creationComplete
- コンポーネントの構築、プロパティ処理、測定、レイアウトおよび描画が完了したときに送出される
- creationComplete
※このタイミングは配下のコンポーネントの構築も完了しているので確実にアクセスできる
- <よく使うイベント>
- click
- クリックされた場合、またはフォーカスのあるボタン上でSpaceキーが押された場合
- click
※Enterキーでは反応しない
-
- doubleClick
- ダブルクリックされた場合
- doubleClick
※doubleClickEnabledプロパティを有効にする必要あり
※テキスト系のコンポーネントのテキストが変更された場合や、
リスト系のコンポーネントの選択されている要素が変更された場合
- <その他>
ex) イベントを投げたいコンポーネント.dispatchEvent(new Event("イベント名"))
-
- イベントの発生元の取得
- event.currentTargetで取得できる
- イベントの伝播を止めたい場合
- event.stopImmediatePropagetion()メソッドを呼び出すと以降のイベントリスナーが処理されない。
- イベントの発生元の取得
イベントたくさんありますが、このくらい覚えておくといいかもしれませんね。
ではでは
ポップアップ関連[Flex]
覚えておきたいメソッド
- ポップアップを表示する
- PopupManager.addPopup(*1, *2, *3)
*1:ポップアップさせたい画面
*2:ポップアップを表示したい画面
*3:trueにしておくとポップアップ表示中は、ポップアップ以外が操作不能になる
- ポップアップを画面中央に表示する
- PopupManager.centerPopup(*1)
*1:ポップアップさせたい画面
- ポップアップを消す
- PopupManager.removePopup(*1)
*1:ポップアップさせたい画面
覚えておきたい処理
- ポップアップからデータを受け取る
- イベントリスナーを登録(イベントは「FlexEvent.REMOVE」)
- 処理を以下のように記述
var popup : *1 = event.currentTarget as *1
//*1はポップアップ画面
- ポップアップをEscキーで消す
- イベントリスナーを登録(イベントは「KeyboardEvent.KEYDOWN」)
- 以下のように処理を記述
//イベント時に呼び出すメソッド
public function removeDisplay(event : KeyboardEvent) : void {
if(event.charCode == Keyboard.ESCAPE) {
*1.dispatchEvent(new CloseEvent(CloseEvent.CLOSE));
}
}
//*1はポップアップ画面の型の変数今日はこのへんで
体調があんまりよくない
最近、頭痛がひどくて困ってます。
薬飲んでも効かないし…
なんかいいなおし方しりませんか?
どもども

天気もすっかり秋になって過ごしやすい季節になりました。
今日も元気にプログラミングw
アイテムレンダラ[Flex]
Flexに詳しい人と話していて、このアイテムレンダラを
使えるかどうかでFlexを理解しているかどうかがわかると
言ってました。
個人的な感覚でいえばとっつきづらいけど、仕組みを理解
してしまえば一気に理解が深まる感じですね。
僕の理解がどこまでのものかはわかりませんが、今回は
データグリッドにチェックボックスを表示するアイテム
レンダラをサンプルにしたいと思います。
ポイント
- アイテムレンダラを定義するクラスを作成
- アイテムレンダラを作りたいコンポーネントを継承する。(今回はCheckBox)
- プロパティを設定する
- IFactoryクラスを作成する
- newInstance()メソッドの戻り値に上記の定義したアイテムレンダラを設定する。
サンプル
//アイテムレンダラの定義
//CheckBoxRenderer.as
import mx.controls.CheckBox;
import mx.controls.dataGridClasses.DataGridListData;
public class CheckBoxRenderer extends CheckBox
{
public function CheckBoxRenderer()
{
super();
}
override public function set data(dto:Object):void {
super.data = dto;
//データフィールドの値をselectedプロパティにセット
var colData : DataGridListData = DataGridListData(listData);
selected = super.data[colData.dataField];
}
}
//IFactory
//CheckBoxRendererFactory.as
import mx.core.IFactory;
public class CheckBoxRendererFactory implements IFactory
{
public function CheckBoxRendererFactory()
{
}
public function newInstance() : *
{
var itemRenderer : CheckBoxRenderer = new CheckBoxRenderer();
return itemRenderer;
}
}<!-- DataGridへの設定 ※MXMLは適当に端折ります -->
<!-- DataGridSample.mxml -->
xmlnsにCheckBoxRendererFactoryを呼び出せるようにしておく
<!-- newInstance()メソッドを実装したクラスを呼び出す -->
<renderer:CheckBoxRendererFactory id="check" />
<!-- DataGridColumnにitemRendererを設定 -->
<mx:DataGridColumn id="check"
headerText="チェック"
dataField="checkBox"
textAlign="center"
itemRenderer="{check}" />
実行結果
※画像参照(この画像では一行目にselectedの値をtrue、二行目をfalseに設定しています)
dataFieldとかは適当に設定して試してみてください。
ではでは
和暦変換[Java]
Java1.6になって和暦変換が簡単にできるようになりました。
topicとして非常に気になったのでサンプルを作りました。
ポイント
- Localeの設定
- 言語、国、バリアントを"JP"に設定する。
- Calendar.ERAに和暦に対応した数値を設定する。
- 対応する数値は以下の通り
| 元号 | 数値 |
| 明治 | 1 |
| 大正 | 2 |
| 昭和 | 3 |
| 平成 | 4 |
- 日付のフォーマット
- "GGGGyy年MMMMd日"→「平成yy年mm月d日」
- "Gyy/M/d"→「Hyy/m/d」
サンプル
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
public class DispJapaneseCalendar {
public static void main(String[] args) {
int year = 21;
int month = 10;
int day = 8;
//ロケールの設定
Locale.setDefault(new Locale("ja", "JP", "JP"));
//日付のフォーマット
SimpleDateFormat warekiFormat = new SimpleDateFormat("GGGGyy年MMMMd日");
SimpleDateFormat slushedFormat = new SimpleDateFormat("Gyy/M/d");
Calendar cal = Calendar.getInstance();
//ERAの設定
cal.set(Calendar.ERA, 4);
cal.set(year, month - 1, day);
System.out.println(warekiFormat.format(cal.getTime()));
System.out.println(slushedFormat.format(cal.getTime()));
}
}
実行結果
平成21年10月8日 H21/10/8
こんな感じでサンプルを書いていきたいと思ってます。
億劫になったらもうちょっと簡単に書くかも。