- - PR -
JSpinnerのFormatの設定について
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-01-28 17:50
はじめまして。taichiと申します。
下記にあるように記述したところ、 Spinnerの表示は小数第4位まで表示してくれたところまではいいのですが、 NumberModelのStepSizeまで小数第4位でFormatしてくれるため、 表示されている値の丸め誤差が大きくなってしまいます。 私としては、 StepSizeは小数第6位までで計算し、表示は小数第4位にしたいのです。 Eventで処理しようともしましたが、 増減のどちらのボタンが押されたのか判断するように書くことができず、 うまくできませんでした。 どうかご教授お願いします。 private JSpinner TestSpinner(){ SpinnerNumberModel Model = new SpinnerNumberModel(0.000000,-50.000000,50.000000,0.023023); JSpinner spinner = new JSpinner(Model); JSpinner.NumberEditor editor = new JSpinner.NumberEditor(spinner, "0.0000"); spinner.setEditor(editor); return spinner; } | ||||||||||||
|
投稿日時: 2004-01-28 20:22
エディタがテキストから値を取得するときに、表示桁以下を
切り捨ててしまうことが原因のようですね。 したがって、JSpinner.NumberEditorのcommitEditを オーバーライドすることで、おそらくご希望の動作ができますよ。 表示部分が以前の値と変わっていなかったら変更しないようにしてください。 | ||||||||||||
|
投稿日時: 2004-01-29 10:31
返答ありがとうございます。
最近Javaを書き出したばかりで、 まだまだ分からないことも多いので 大変助かりました。 早速、そのように書いてみたいと思います。 どうもありがとうございました。 | ||||||||||||
|
投稿日時: 2004-01-29 17:19
いろいろ書いてみたのですが、うまく動きません。
commitEditの使用方法がいまいち理解できないのです。 >エディタがテキストから値を取得するときに、表示桁以下を >切り捨ててしまうことが原因のようですね。 >したがって、JSpinner.NumberEditorのcommitEditを >オーバーライドすることで、おそらくご希望の動作ができますよ。 Componentとは完全に別の場所で計算してから 値を渡してマスクするということなのでしょうか? 大変恐縮ですが、再度ご教授していただけませんでしょうか。 よろしくお願いいたします。 私としては下記にあるように表示されてほしいです。 <bad Proguram> [Spinner Display] [Calculated Value] 0.0000 : 0.000000 0.0230 : 0.023000 0.0460 : 0.046000 0.0690 : 0.069000 0.0920 : 0.092000 0.1150 : 0.115000 0.1380 : 0.138000 0.1610 : 0.161000 ... : ... <good Proguram> [Spinner Display] [Calculated Value] 0.0000 : 0.000000 0.0230 : 0.023023 0.0460 : 0.046046 0.0921 : 0.092092 0.1151 : 0.115115 0.1381 : 0.138138 0.1612 : 0.161161 0.1842 : 0.184184 ... : ... | ||||||||||||
|
投稿日時: 2004-01-29 17:37
私は、こんな風にオーバーライドしてみました。
どうでしょう? | ||||||||||||
|
投稿日時: 2004-02-02 15:47
ご返答ありがとうございます。
私の力が足りないため、どうしても先に進みません。 public class overSpinner extends JSpinner.NumberModel { public void commitEdit() throws ParseException { .. .. } } このようにextendsにJSpinner.NumberModelと記述してもエラーになってしまいます。 この部分をJSpinnerやJFormattedTextFieldとしても同様です。 内部のコードを書き換えてもうまくいきません。 自分でもどうしてよいのか。。。 とりあえず、がんばってみます。 | ||||||||||||
|
投稿日時: 2004-02-02 16:17
えっと、commitEdit()をオーバーライドするのはスピナーのモデル(JSpinner.NumberModel)ではなく、エディタ(JSpinner.NumberEditor)ですよ。そもそも、モデルにはcommitEdit()はないですし... (^^; こんな感じです。
で、使うほうは、
| ||||||||||||
|
投稿日時: 2004-02-02 16:56
またお返事いただき、ありがとうございます。
NumberModelは書き間違いでした。すいません。 周りにJavaについて聞ける人がおらず、大変助かります。 下記にあるコードで問題ないと思うのですが、 "SpinnerEditor2"が"メソッドの宣言が不正です。戻り値の型が必要です。" とエラーになってしまいます。 なぜでしょうか? | ||||||||||||
