ロギング GUI の一部として、JSlider のサブクラスとなるスライダー バーを作成しています。私がやりたいことは、スライダー バーの上にいくつかの項目を描画できるようにすることです (たとえば、特定の設定によってどれだけのログ情報が吐き出されるかを示す「ボリューム」表示)。paintComponent() メソッドをオーバーライドしましたが、paintComponent に渡される Graphics オブジェクトのクリッピング四角形がどのように計算されるかについて少し混乱しています。
基本的に、私がやりたいことは、描画できるコンポーネントの可視領域内により多くのスペースを作成することですが、既に描画されているものの上のみです。たとえば、次の画像には 3 つのスライダー バーがあります。
これらのクリッピング四角形は、それぞれ赤で表示されます。(これらは多少手描きですが、実際には drawRect(g.getClipBounds()) を使用して、同様の長方形を作成しました。スライダー バーをまったく拡張しない場合、上部のスライダー バーが得られます。 getPreferredSize() をオーバーライドして、コンポーネントの高さ (「ボリュームの高さ」と呼びます - デフォルトでは 20) を追加すると、中央の四角形が得られます。中央のスライダー バーですが、クリッピング四角形はボリュームの高さの 1/2 だけコンポーネントの上部に向かって移動します。
それで、私の質問は、'paintComponent() メソッドに渡されたときに、Graphics オブジェクト内で計算されたクリッピング四角形はどのように計算されるのですか?' です。システムが特定のコンポーネントのクリッピング境界をどのように決定するかがわかりません。
ありがとう、
〜スコット