3

小さなペイントプログラムを作ろうとしています。JPanel上にある上にオブジェクトを描画していますJFrame(Netbeans 6.9を使用しています)。フォント、ライン、fillRectangle などの基本的な機能がいくつかあります。オーバーライドする標準的な描画方法を使用していますpaintComponent()

class .... extends JPanel
{
@Override
void paintComponents(Graphics g)
{
.......
}
}

問題は、領域の上に text,line を描画すると、領域の上ではなく背後に描画されることです。基本的に、以前に描画された他のすべてのオブジェクトの上にオブジェクトを描画したいと考えていますJPanel。他の種類のレイヤード ペインに切り替えたくありません。非常に単純な方法の 1 つは、すべてのオブジェクトを元に戻し、逆の順序でペイントすることです (最後のオブジェクトを最初に)。

4

1 に答える 1

5

オーバーライドする必要がありpaintComponent(Graphics g)、呼び出すことを忘れないでくださいsuper.paintComponent(Graphics g);

class .... extends JPanel
{
    @Override
    protected void paintComponent(Graphics g)
    {
        super.paintComponent(g);//honor paintComponent an call super to draw other components that were added to the JPanel
        .......
    }
}

が表示されるように、適切なサイズをオーバーライドgetPreferredSize(..)JPanelて返す必要がある場合もあります。JPanel

class .... extends JPanel
{
    @Override
    public Dimension getPreferredSize()
    {
        return new Dimension(300,300);
    }
}

編集:

何をしているかによっては、ウィンドウ全体に透明なペインを設定し、ペイントすることもできるGlassPaneJFrameを見たいと思うかもしれません。

ここに画像の説明を入力

于 2012-11-05T04:46:54.657 に答える