0

ペイントするコードに従っていますJFrame

package march_2013;

import java.awt.Graphics;
import javax.swing.JFrame;

public class Question7 extends JFrame {

    public void paint(Graphics g) {
        int[] x = new int[] { 10, 60, 360, 410, 210, 210, 260, 210, 190, 160,
                190, 190 };
        int[] y = new int[] { 200, 250, 250, 200, 200, 180, 180, 100, 100, 160,
                160, 200 };
        g.drawPolygon(x, y, x.length);
        g.drawLine(190, 100, 190, 180);
        g.drawLine(210, 100, 210, 180);
    }

    public static void main(String[] args) {
        Question7 window = new Question7();
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setBounds(440, 40, 420, 400);
        window.setVisible(true);
    }
}

正常に動作し、次の出力が得られます。

ここに画像の説明を入力

しかし、JFrame を最大化すると、画像が再描画されます。でも昔のイメージはそのまま。

ここに画像の説明を入力

この問題を解決するには?ありがとうございました!

4

2 に答える 2

1

呼び出しsuper.paint()ます。

public void paint(Graphics g) {
    super.paint(g);
    // ...

ペイントのAPI ドキュメントには次のように書かれています。

このメソッドを再実装する場合はsuper.paint(g)、軽量コンポーネントが適切にレンダリングされるように呼び出す必要があります。

背景が白であることを確認するには:

public void paint(Graphics g) {
    super.paint(g);
    g.setColor(Color.WHITE);
    g.fillRect(0, 0, getWidth(), getHeight());
    g.setColor(Color.BLACK);
    // ...
于 2013-05-26T03:26:14.413 に答える