2011-02-21 7 views
0

私が使用しているカスタムのルックアンドフィールにはisOpaque()コールが無視されるため、JButtonを拡張するクラスがあります。つまり、ボタンとすべての親パネルでsetOpaque(false)を呼び出したにもかかわらず、ボタンの背景がレンダリングされるということです。私はこれがLAFの設計者からの問題であることを確認したので、私は何もできませんが、クラスを拡張します。 私の質問は、背景をレンダリングしないようにpaint()メソッドを実装する方法とボタンアイコンだけです。 乾杯解決しようJButtonのpaint()メソッドのオーバーライド

:は、paintComponent、paintBorder、およびpaintChildren:ケースには誰もが興味を持っている後に私がいた答えはbutton.setContentAreaFilled(false);

答えて

4

絵画は、三つの方法により行われている使用することでした。彼らはその順序で呼び出され、コンポーネントの背景を描くのは最初のものです。あなたがそれを過負荷にして残りの2つを残すなら、あなたは大丈夫でしょう。

+0

paintComponent(final Graphics g)の呼び出しをオーバーライドして、ComponentUIクラスを拡張して更新(final Graphics g、final JComponent c)メソッドをオーバーライドさせました。ここから背景色が描画されるのを防ぐことができますが、元のアイコンをc.repaint()を呼び出して描画することはできません。あなたはおそらく解決策/行動措置についてアドバイスできますか? –

関連する問題