gpt4 book ai didi

java - 为什么这个 while 循环会阻止 Paint 方法正常工作?

转载 作者:行者123 更新时间:2023-12-02 04:14:01 25 4
gpt4 key购买 nike

这是我的代码:

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() 中并从 Paint 中调用它,这也做了同样的事情。我确信我距离做好这件事还有很长的路要走。如果我做错了什么,你能告诉我吗?我一直在到处寻找让它发挥作用,但找不到任何适用的东西。谢谢。

最佳答案

因为绘画发生在事件调度线程中,并且您用明显的无限循环阻止了它。这将防止发生任何进一步的绘制、处理事件以及 EDT 内发生的任何其他事情。

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

关于java - 为什么这个 while 循环会阻止 Paint 方法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33508805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com