1

画面に四角形を描画する際に問題があります。jpanel クラスに paintComponent メソッドがあり、その中に四角形を描画したいと考えています。次のようになります。

public void paintComponent( Graphics g ) {

    super.paintComponent( g );

    g.setColor( Color.yellow );
    g.fillRect( 0, 140, 100, 100 );

}

問題は、描画しているパネルにいくつかのパネルが追加されていることです。サブパネルは常に上に表示され、四角形はその下に描画されます。rectが前面に描画されるようにするにはどうすればよいですか?

4

2 に答える 2

4

描画された JPanel がコンテナー内にある場合、それが「前面」になることはありません。子コンポーネントを呼び出して非不透明にすることもできますがsetOpaque(false)、それでもコンテナは常にその子の背後にあります。

絶対に別のコンポーネントの上にコンポーネントが必要な場合は、JLayeredPane の使用を検討するか、トップ レベル ウィンドウのガラス ペインに描画することを検討してください。

于 2012-09-19T02:59:57.260 に答える
3

悪意はありませんが、これは悪い考えだと思います...

public void paint( Graphics g ) {

    super.paint( g );

    g.setColor( Color.yellow );
    g.fillRect( 0, 140, 100, 100 );

}

Hovercraft が指摘しているように、より良いアプローチはGlassPane( How to use RootPanes ) またはJLayeredPane( Java 7 を使用していない場合はJLayerAKA ) を使用することです。JXLayer

于 2012-09-19T03:12:20.647 に答える