0

カスタム描画グラフを jSlider のスケールに合わせようとしています (スライダーはグラフの X 軸スケールを提供します)。グラフに関連する値を設定するにはスライダー ノブが必要なので、実際には jSlider である必要があります。

問題は、スケール ラベルの長さが変わると、スケールの最初 (および最後) の目盛りの開始位置が異なるため、グラフの位置を手動で変更して一致させる必要があることです。

スライダーのスケールを設定し、最初の目盛りのピクセル位置を決定して、グラフの開始点を一致させることはできますか?

BasicSliderUI の trackRect.x は正しい X ポイント位置を提供しますが、アクセスに問題があります。次のコードを使用して、trackRect で null ポインターを取得し続けます。BasicSliderUI を拡張することによって RangeSlider が trackRect.x にアクセスするのを見たので、ここで非常に基本的なことが明らかに欠けています。私は単に次のようなものをオーバーライドしていません:

trackRect.x 値にアクセスするクラス:

import javax.swing.JSlider;
import javax.swing.plaf.basic.BasicSliderUI;


public class ExtendedBasicSliderUI  extends BasicSliderUI
{
   public ExtendedBasicSliderUI(JSlider b)
   {
       super(b);
   }

   public int getScaleStartPosition()
   {
       return trackRect.x;
   }

}

スライダーを含むビューのコンストラクターで:

initComponents();
extendedUI = new ExtendedBasicSliderUI(jSlider1);
jSlider1.setUI(extendedUI);

criteriaModel.setGraphAlignmentIntervalRatio(extendedUI.getScaleStartPosition());
4

1 に答える 1