Q170:キーイベントハンドラーを用いてテンキーの0キーを押した際に、数値入力フィールドの数値が1増える動作
Q170-1:
先ほど御連絡いたしました件についてアプリケーションをお送りいたしますので、ご確認お願い致します。
A170-1:
キーイベントハンドラーを用いてテンキーの0キーを押した際に、数値入力フィールドの数値が1増える動作につきまして、キーを押してもキーイベントハンドラーからイベントが発生しないとのことでしたが、当方で試したところイベント自体は発生しておりました。
数値入力フィールドの値を取得し、それに1を足して再度、数値入力フィールドにメソッド「数値を設定する(Object)」を用いて設定する際、数値入力フィールドの数値型(BigInteger)と、設定する数値型(BigDecimal)が一致していないため、うまく計算結果が設定できていないようです。通常、演算コンポーネントの計算結果はBigDecimalとなっております。
また、メソッド「数値を設定する(Object)」のかわりにメソッド「文字列を設定した後、その文字列で値を確定する(String)」を用いますと、そのような型の不整合を気にする必要がなくなります。
ただし、若干問題がございまして、数値入力フィールドにカーソルがある場合、0が入力されてしまいます。
アプリケーションにもよりますが、数値入力フィールドの編集可否を否にするなど、入力を制御する必要がありそうです。