Графика в paintComponent исчезает после изменения размера JFrame - PullRequest
2 голосов
/ 11 февраля 2012

Я начинающий Java, и я создаю программу, которая рисует линии с помощью клавиш со стрелками, где следующая строка начинается с конца первой строки.Теперь я его создал, но проблема в том, что всякий раз, когда я изменяю размер окна, рисунок исчезает.

Вот мой код:

public class draw extends JPanel {

    int up = 1, down = 0, left = 0, right = 0;
    int beginX, beginY;

    @Override
    public void paintComponent(Graphics g) {

        if(up == 1){
            beginX = getWidth() / 2;
            beginY = getHeight() / 2;
        }
        if (up > 0) {
            g.drawLine(beginX, beginY, (beginX), (beginY - up));
            beginY -= (up);
            up = 0;
        } else if (down > 0) {
            g.drawLine(beginX, beginY, beginX, (beginY + down));
            beginY += down;
            down = 0;
        } else if (right > 0) {
            g.drawLine(beginX, beginY, (beginX + right), beginY);
            beginX += right;
            right = 0;
        } else if (left > 0) {
            g.drawLine(beginX, beginY, (beginX - left), beginY);
            beginX -= (left);
            left = 0;
        }

    }

    public void drawUp() {
        up += 3;
        repaint();
    }

    public void drawDown() {
        down += 3;
        repaint();
    }

    public void drawLeft() {
        left += 3;
        repaint();
    }

    public void drawRight() {
        right += 3;
        repaint();
    }
}    

1 Ответ

4 голосов
/ 11 февраля 2012

paintComponent должен рисовать текущую графику компонента, а не только то, что вы хотите добавить. Теперь у вас есть два подхода: либо запомнить все линии и нарисовать их все, либо создать отдельный буфер для рисования при генерации линий и использовать этот буфер для рисования на компоненте, когда он просит перерисовать.

...