gpt4 book ai didi

java - JFrame 的奇怪行为,屏幕有时全白

转载 作者:行者123 更新时间:2023-11-30 03:59:40 26 4
gpt4 key购买 nike

我正在编写一个程序,它会画一条线,然后复制它,将其旋转 90 度,并对整个图片一遍又一遍地执行相同的操作。我的问题是,我使用的 JFrame 有时不会绘制第一条线,而是使整个框架变为白色。我找不到原因,有时有效,有时无效,完全是随机的。也许我并没有真正理解paint()方法是如何工作的。这是我的代码中不起作用的部分:

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

public class WeirdThing extends JFrame {
static final int winWidth = 800;
static final int winHeight = 600;
boolean start;

public WeirdThing() {
super("WeirdThing");
start = true;
}

public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
if (start) {
g2.setColor(Color.BLACK);
g2.drawLine(winWidth / 2, winHeight / 2, winWidth / 2 + 5, winHeight / 2);
start = false;
}
repaint();
}

public static void main(String[] args) {
WeirdThing a = new WeirdThing();
a.setDefaultCloseOperation(EXIT_ON_CLOSE);
a.setSize(winWidth, winHeight);
a.setVisible(true);
}

}

这是我得到的两个结果的图片: Wanted Result | Result I don't want

最佳答案

您在 paintrepaint 方法之间创建了循环依赖关系,这会阻止 Swing 更新 UI - 删除 repaint 方法

<小时/>

Swing 中的自定义绘制是通过重写 paintComponent 而不是 paint 来完成的。请记住调用 super.paintComponent(g)

关于java - JFrame 的奇怪行为,屏幕有时全白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22283369/

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