- PR -

JDK1.4におけるJComboBoxについて

1
投稿者投稿内容
なか
会議室デビュー日: 2002/04/03
投稿数: 1
投稿日時: 2002-04-03 20:43
JDK1.4の環境でSwingのJComboBoxを配置したところ
JComboBoxを選択するだけで、フォーカスが消えてしまいました。
JDK1.3で同じ動作をさせると問題なく動作します。
JDK1.4でフォーカスを扱う場合、
特別な処理などが必要なのでしょうか?

また、JDK1.4ではsetNextFocusableComponentというメソッドが
推奨されなくなってしまったのですが、
こちらに変わるメソッドなどありますのでしょうか?
よろしかったらお教え願います。
へげもん
ベテラン
会議室デビュー日: 2002/04/14
投稿数: 87
お住まい・勤務地: 埼玉県
投稿日時: 2002-04-14 00:14
>JDK1.4の環境でSwingのJComboBoxを配置したところ
>JComboBoxを選択するだけで、フォーカスが消えてしまいました。
>JDK1.3で同じ動作をさせると問題なく動作します。

私も、まったく同じ現象にハマりました。:D
テキストフィールドなどがあると、操作不能になってしまうので致命的ですね。

>JDK1.4でフォーカスを扱う場合、
>特別な処理などが必要なのでしょうか?

バンドルされてるサンプルでも、JComboBoxを選んでいる画面で同じ現象が
起こるようです。

>また、JDK1.4ではsetNextFocusableComponentというメソッドが
>推奨されなくなってしまったのですが、
>こちらに変わるメソッドなどありますのでしょうか?
>よろしかったらお教え願います。

java.awt.FocusTraversalPolicyによって置き換えられた、とありますね。
JComboBoxはこちらにしか対応していないとか?:-?
YKID
常連さん
会議室デビュー日: 2002/04/09
投稿数: 29
投稿日時: 2002-04-16 17:07
こんにちわ、YKIDです。

> >また、JDK1.4ではsetNextFocusableComponentというメソッドが
> >推奨されなくなってしまったのですが、
> >こちらに変わるメソッドなどありますのでしょうか?
> >よろしかったらお教え願います。
>
> java.awt.FocusTraversalPolicyによって置き換えられた、とありますね。
> JComboBoxはこちらにしか対応していないとか?:-?

setNextFocusableCompnentメソッドは、javax.swing.JComponentクラスのメソッド
なので、別にJComboBoxだけのお話ではありません。

この話についての概要は、

http://java.sun.com/j2se/1.4/ja/changes-beta2.html

に掲載されています。
また、詳細については、BugID:4476300(英語)に記載されています。
ちなみに、バグレポートを閲覧するには、ユーザ登録が必要になってま
す。

どうやら、
フォーカスの移動サイクルが不完全な輪になることを、危険視している
ようです。
・setPrevFocusableCompnent()が無いこと。
・違うコンポーネントのsetNextFocusableComponentに設定した場合の
 挙動。
から、ユーザの意図しない挙動が発生しうるとされているようです。

で、FocusTravasalPolicy(DefaultFocusTraversalPolicyになるのか
な?)を使って、フォーカスのコントロールしたほうが良いよ。
と言うことらしいです。

間違い等ございましたら、ご指摘お願いします。
1

スキルアップ/キャリアアップ(JOB@IT)