• ベストアンサー

スクロールバー

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("スクロールバー"); } } しかし、実行しても「スクロールバー」と表示されません。 その原因が分かりません。 なぜ表示されないのかを、ご教示願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • PecoPlus
  • ベストアンサー率76% (144/188)
回答No.1

 こんばんは。 > 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はトリガされません。

honda0107_1981
質問者

お礼

こんばんは。そして、ありがとうございます。 頂いた内容を元に、実行してみました。 その結果、ちゃんと出力されました。 引数の3番目(今回では80)は、スクロールバーの幅だと思っていました。 が、可視量だったんですね。 大変参考になりました。 本当にありがとうございました。 また、何かありましたら、お願いします。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

br[i].addAdjustmentListener(this); では?

honda0107_1981
質問者

お礼

ご回答ありがとうございした。 「this」について調べてみました。 アプレット上では引数はthisにするんですね。 ただ今回は、アプレットではないんですよ・・・。 私の質問文に、背景説明がなかったことをお詫びします。 また、よろしくお願いします。

関連するQ&A