首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个同时循环阻止油漆方法的正确工作?

为什么这个同时循环阻止油漆方法的正确工作?
EN

Stack Overflow用户
提问于 2015-11-03 20:49:50
回答 1查看 354关注 0票数 1

这是我的密码:

代码语言:javascript
复制
package javaapplication2;

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class JavaApplication2 extends JPanel {

    public static void main(String[] args) {
        JFrame frame = new JFrame("Simple Sketching Program");
        frame.getContentPane().add(new JavaApplication2());

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 300);
        frame.setVisible(true);
    }

    @Override
    public void paint(Graphics g) {
        g.setColor(Color.BLACK);
        g.fillRect(0, 0, getSize().width, getSize().height);

        while(true) {
            delay(1000);
        }
    }
}

我还在努力掌握这里的诀窍。现在,如果while(true)循环被注释掉,它就可以正常工作,并且屏幕上覆盖着黑色。我甚至把它放进repaint()中,并从画图中调用它,这做了同样的事情。我肯定我还差几英里才能把这件事做好。如果我做错了什么,你能告诉我吗?我一直在到处寻找,想让它起作用,却找不到适用的东西。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-03 20:51:43

因为绘画发生在Event Dispatch Thread中,你用明显的无限循环阻止它。这将防止任何进一步的绘制发生,事件被处理,以及发生在EDT内部的任何事情。

这就是为什么您从不在EDT上执行长时间运行的操作,而是使用SwingWorker或其他机制。

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

https://stackoverflow.com/questions/33508805

复制
相关文章

相似问题

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