首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调整JFrame大小后,paintComponent中的图形将消失

调整JFrame大小后,paintComponent中的图形将消失
EN

Stack Overflow用户
提问于 2012-02-11 19:37:41
回答 1查看 1.1K关注 0票数 2

我是一名java初学者,我正在创建一个使用箭头键绘制线条的程序,其中下一行从第一行的末尾开始。现在,我创建了它,但问题是,每当我调整窗口大小时,绘图都会消失。

下面是我的代码:

代码语言:javascript
复制
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();
    }
}    
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-11 19:46:16

paintComponent应该绘制组件的当前图形,而不仅仅是您想要添加的图形。因此,您现在有两种方法,一种是记住所有线条并绘制它们,另一种方法是在生成线条时创建一个单独的缓冲区用于绘制,并在组件要求重新绘制时使用该缓冲区在组件上进行绘制。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9239893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档