- PR -

キー制御を行う画面を作るには

1
投稿者投稿内容
monika
会議室デビュー日: 2005/02/22
投稿数: 6
投稿日時: 2005-02-22 14:35
はじめまして。ちょっと会議室が違うのかもしれないのですが、Javaを使用する
観点からの意見を聞かせて下さい。

質問は以下の2点。
1.Web画面作成時にキー制御がある場合、Swingを使用するべきなのか?
2.JavaScriptとSwingそれぞれでのキー制御、その長所短所は?


画面上のキー制御を行いたい(Escを押したらキャンセルボタンを、Enterなら
OKボタンを押すようにしたい)のですが、この仕様はjsp上では難しいので
しょうか?

<body onkeydown="keydown()">

としておいて

function keydown() {
if (event.keyCode == 13) {
//処理
}else if (event.keyCode == 27) {
//処理
}
}

というJavaScriptを呼び出せば対応はできると思うのですが、これだとテキスト
ボックスなどのオブジェクトがたくさんあった時の処理が大変になると思うのです。
また、予想外のエラーが起きるかもしれない(例えば他のボタンにフォーカスが
当たっているのにEnterを押したらOKボタンの処理が動くのか、とか)。

だからといって、キー制御のためだけに画面をSwingにするのか?
という疑問もあります。
(Swingをよく知らないので、Swingを選んで良いのかすら判断できていません・・・)

どうか皆さんの意見を聞かせて下さい。
takamaro
大ベテラン
会議室デビュー日: 2004/10/12
投稿数: 100
投稿日時: 2005-02-22 16:25
引用:

monikaさんの書き込み (2005-02-22 14:35) より:

質問は以下の2点。
1.Web画面作成時にキー制御がある場合、Swingを使用するべきなのか?
2.JavaScriptとSwingそれぞれでのキー制御、その長所短所は?


具体的に何をどうしたいかが分からない事にはアドバイスも難しいですが、、、
クライアント環境がブラウザだとして、Swing(JApplet)を含めアプレットを
用いるというのは余程の理由が無い限りは選択肢に上がらないと思います。
特にSwingが実行可能な環境を不特定多数のユーザに期待するのは現状無理が
有りますね、殆どの人はMS-JVMのみでプラグインを組み込んでいませんから。
私の考えからすると余程の理由でも無い限りJavaScriptですら排除すべきだ
と思っています(現に、私はJavaもJavaScriptも通常はオフにしてます)
ですから、Escキーでキャンセル、EnterキーでOKという仕様が本当に必要
なものかどうかすら疑問です。
どうしても、という場合JavaScriptのみで十分対処は可能かとは思います。
イベントを無効化すれば何とでもなるはずです。
けれど、或るボタンにフォーカスが当っている状態でEnterキーを押したとして、
その動作がそのボタンのクリックではなく他の動作を確定するという振舞いが
本当にユーザに対して親切な振舞いなのか?という事は甚だ疑問を感じます。
monika
会議室デビュー日: 2005/02/22
投稿数: 6
投稿日時: 2005-02-23 22:21
返信ありがとうございます。

いろいろ調べてみたところ、おっしゃる通りSwingよりもJavaScriptで
実現する方が良いみたいですね。

あまり良い仕様ではないことはわかっているのですが・・・どうしても、
と望まれれば実現せざるをえないのです。いかに使いにくいか(ご指摘
の通り、他にフォーカスが当たっていた場合の動きが奇妙になります)
という方向で説得してみようと思っています。

ありがとうございました。
1

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