カスタム描画グラフを 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());