- PR -

自作スライダーバー

1
投稿者投稿内容
taka
常連さん
会議室デビュー日: 2003/09/22
投稿数: 46
投稿日時: 2004-03-22 10:32
環境
OS = Windows 2000
Tool = JBuilder8
JDK = 1.4

仕様によりSwingが使用できない為、自作スライダーバーを作ろうとしております。
そこで下記のようなクラスを作ってみました。
コード:
public class Cls_Slider {
 final int SIZE_SCROLL_W = 200; //スライダーバー幅 
 final int SIZE_SCROLL_H = 3;   //スライダーバー高さ
 final int POS_SCROLL_X  = 15; //スライダーバー描画位置、X値  
 final int POS_SCROLL_Y  = 230; //スライダーバー描画位置、Y値
 final int SIZE_SLIDER_W = 10; //スライダー幅  
 final int SIZE_SLIDER_H = 19;  //スライダー高さ
      int posSliderX    = 10;  //スライダー描画位置、X値  
 final int POS_SLIDER_Y  = 222; //スライダー描画位置、Y値

  private int intMaxVal = 0; //最大値
  private int intMinVal = 0; //最小値
          int intNowVal = 0; //現在の値

  /**
   * CONSTRUCT
   * @param min = 最小値
   * @param max = 最大値
   */
  public Cls_Slider (int min, int max) {
    intMaxVal = max;
    intMinVal = min;
  }

  /**
   * 現在の値を変更する&新しい値からスライダー位置を算出
   * @param newVal = 新しい値
   */
  void changeValue(int newVal){
    int intNewPos = 0;
    intNewPos = (int)(newVal * (((double) SIZE_SCROLL_W) / (double) intMaxVal)) + POS_SCROLL_X - 5;
    posSliderX = intNewPos;
    intNowVal = newVal;
  }

  /**
   * 現在のスライダー位置を変更する&スライダー位置から現在の値を算出
   * @param newPos
   */
  void changePos(int newPos){
    int intNewVal = 0;
    intNewVal = (int)((newPos - POS_SCROLL_X) * ((double) intMaxVal / (double) (SIZE_SCROLL_W)));
    posSliderX = newPos - 5;
    intNowVal = intNewVal;
  }

}



このクラスのコンストラクト引数に例えば(-50,100)として、"changeValue()"や"changePos()"メソッドで正しい値を算出するにはどのような計算をすればよいのでしょうか?



aa
ぬし
会議室デビュー日: 2004/01/08
投稿数: 299
投稿日時: 2004-03-22 19:44
あなたのソースコードのメソッドの中に、intMinValとか、符号の処理とか、
そういうのが一切出てこないのはなぜでしょうか?
1

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