5

2 つのノブ (範囲を表す) が付いたスライダーが必要でしただし、Java のBasicSliderUIを拡張する独自の UI を作成しました。それらはペイント メソッドをオーバーライドして、独自のノブを描画します。現在のルック アンド フィールに基づいたデフォルトのノブを使用したいと考えています。BasicSliderUIpaintThumbメソッドを呼び出してみましたが、これにより、現在のルック アンド フィールに関連付けられていないように見える一般的なノブが得られます。私が知る限り、JSliderはMultiSliderUIから UI を取得します。JSliderのように変化するが、1 つではなく 2 つのノブを描画する UI を作成するにはどうすればよいですか?

前もって感謝します!

4

3 に答える 3

2

から現在のルック アンド フィールを取得してjavax.swing.UIManager呼び出しgetUI(new JSlider())てみてください。JSliderこれは、 にキャスト可能な、 に使用される現在の UI を返す必要がありますJSliderUI

残念ながらにはメソッドがJSliderUIありませんが、 にはメソッドがあり、少なくとも Windows XP と Windows Vista では、システムのルック アンド フィールは のサブクラスであり、Metal のルック アンド フィールも同様です。paintThumb(Graphics g)BasicSliderUIBasicSliderUI

したがってJSliderUI、それが のインスタンスであるかどうかを確認したら、それBasicSliderUIをキャストしてBasicSliderUI使用することができpaintThumb(Graphics g)ます。それ以外の場合は、既に行っている方法にデフォルト設定されます。これが実際に機能するかどうかはわかりませんが、必要であれば初めての試みです。

私は Linux や Mac を持っていないので、それらJSliderUIの s が派生したものBasicSliderUIであるかどうかをソースを確認する必要はありませんが、もしそうなら、Java ソース コードをチェックしてください。

于 2009-07-22T10:33:21.837 に答える
1

Jide Commons Layerの RangeSlider クラスを使用できます

これはオープンソースです。

于 2009-07-19T14:30:46.063 に答える