- ベストアンサー
スクロールバー
Javaの初心者です。 ご回答をよろしくお願いします。 質問内容は、スクロールバーについてです。 for(int i=0; i<10; i++){ br[i] = new Scrollbar(Scrollbar.HORIZONTAL, 0, 80, 0, 50); br[i].addAdjustmentListener(new colorScrollbars() ); } 上のようなコードを書き、イベントを受けるために、下記のクラスを定義しました。 public class colorScrollbars implements AdjustmentListener { public void adjustmentValueChanged(AdjustmentEvent e) { System.out.println("スクロールバー"); } } しかし、実行しても「スクロールバー」と表示されません。 その原因が分かりません。 なぜ表示されないのかを、ご教示願います。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 > br[i] = new Scrollbar(Scrollbar.HORIZONTAL, 0, 80, 0, 50); ここがおかしいです。 Scrollbarで注意しないといけないのは、実質の最大値です。 たとえば、 new Scrollbar(Scrollbar.HORIZONTAL, 0, 10, 0, 100) こう書くと、 初期値 0 可視量 10 最小値 0 最大値 100 に設定していますが、実質的な最大値は、 最大値 100 - 可視量 10 = 90 になります。 Scrollbarの取りうる値は、0~90になります。 そうすると、 new Scrollbar(Scrollbar.HORIZONTAL, 0, 80, 0, 50) では、 初期値 0 可視量 80 最小値 0 最大値 50 可視量は最大値を超えてはならないので、不整合のないように調整されて、 初期値 0 可視量 50 最小値 0 最大値 50 こうなります。 そうすると、実質的な最大値は、 最大値 50 - 可視量 50 = 0 になってしまい、Scrollbarの取りうる値が0~0になってしまい、まったく値が変化しないということになってしまいます。 値が変化しない限り、AdjustmentEventはトリガされません。
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
br[i].addAdjustmentListener(this); では?
お礼
ご回答ありがとうございした。 「this」について調べてみました。 アプレット上では引数はthisにするんですね。 ただ今回は、アプレットではないんですよ・・・。 私の質問文に、背景説明がなかったことをお詫びします。 また、よろしくお願いします。
お礼
こんばんは。そして、ありがとうございます。 頂いた内容を元に、実行してみました。 その結果、ちゃんと出力されました。 引数の3番目(今回では80)は、スクロールバーの幅だと思っていました。 が、可視量だったんですね。 大変参考になりました。 本当にありがとうございました。 また、何かありましたら、お願いします。