3

私はいくつかの同様の質問を見てきましたが、残念ながら、そこに含まれている提案は私にとっては完全にはうまくいきませんでした。

全体的な目標:主に視覚化(ここでは「表示」)を表示するウィンドウの左上に表示したいスライダーがあります。スライダーは、背景なしでビジュアライゼーションの上にオーバーレイする必要があります。

これまでのところ、JLayeredPaneのビジュアライゼーションの上のレイヤーにスライダーを含むJPanelがあります。問題は、setOpaqueやsetBackground(new Color(0,0,0,0))を呼び出しても、スライダーを含むJPanelの背景が灰色で表示されることです。ニンバスLAFを使用しています。

もともと、私は絶対レイアウトを使用しました。これは、ほとんどすべてを非常にエレガントに、最小限のコードで実現しました。問題は、ビジュアライゼーションがウィンドウに合わせて自動的にサイズ変更されないことでした(ただし、ビジュアライゼーションをウィンドウに合わせてサイズ変更するクリーンな方法がある場合は、このアプローチを利用できます)。

JPanel sliderPane = new JPanel();
sliderPane.setLayout(new BoxLayout(sliderPane, BoxLayout.X_AXIS));
sliderPane.add(zoomSlider);
zoomSlider.setMaximumSize(new Dimension (60, 150));
sliderPane.add(Box.createHorizontalGlue());
sliderPane.setBackground(new Color(0,0,0,0));

JLayeredPane graphPane = new JLayeredPane();
graphPane.setPreferredSize(new Dimension(1000, 800));
graphPane.setLayout(new BoxLayout(graphPane, BoxLayout.Y_AXIS));
graphPane.add(sliderPane, new Integer(1));
graphPane.add(display, new Integer(0));
graphPane.setOpaque(false);

本当にありがとう!

4

1 に答える 1

2

スライダーのレンダリングは、コンポーネントのUIデリゲート(通常はのサブクラス)の責任ですBasicSliderUI必要に応じて、ここに示すように、独自の実装に置き換えることができます。

画像

于 2012-07-07T01:50:34.793 に答える