【ご質問】
特定処理後に、あるコントロール(CommandButtonやTextFieldなど)にフォーカスを
割り当てたいと考えています。
メソッド become-active と request-key-focus いずれを使用しても
正常にフォーカス割り当ては出来たのですが、この2つのメソッドにはどのような違いがあるのでしょうか。
【回答】
request-key-focusはVisualクラスとそのサブクラスで使用出来るメソッドです。
become-activeはVisualのサブクラスであるActiveTraversorで使用出来るメソッドになります。
したがいまして request-key-focus のみ使用可能なオブジェクトが存在します。
(例.Shapeではrequest-key-focusは使用出来ますが、become-activeは使用出来ません。)
ActiveTraversorのサブクラスであるControlは一般的に複数のオブジェクトを組み合わせて
構成されており、become-active はどのオブジェクトにキーボードフォーカスを持たせれば
良いかの制御を行いますが、request-key-focusはそのような制御は行いません。
また request-key-focus を使用した場合はアクティブになった時にキーフォーカス要求を自動で行います。
上記のような理由からAPIリファレンス上では、両方使用可能なオブジェクトにおいては
become-active を呼び出すように記載されています。