gpt4 book ai didi

Java Applet,重绘 60 次/秒方法和多边形

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

我有一个每秒重新绘制 60 次的运行方法,并且我有一个包含 4 个多边形的绘制方法。还有4个按钮。当您按第一个按钮时,多边形将按顺序排列,红色多边形位于顶部,当您按第二个按钮时,多边形交换,然后绿色位于顶部,其他多边形位于其后面。在 Eclipse 上一切都很好并且工作正常,但是当我在终端小程序查看器中运行它时,多边形不会停止并不断刷新。我怎样才能做出这样的声明:在单击按钮时以 60 次/秒的速度重新绘制所有内容,但只绘制一次多边形。

public void run() {
long lastTime = System.nanoTime();
double ns = 1000000000.0 / 1.0;
double delta = 0;
requestFocus();
while (running) {
long now = System.nanoTime();
delta += (now - lastTime) / ns;
lastTime = now;
while (delta >= 1) {
delta--;
update();
repaint();
validate();

}
}
}

以及绘制方法

    public void paint(Graphics g) {
// gives sharper graphics
g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
windows.drawRact(new Color(0xa0, 0xd1, 0xe3), g2);
if (mlistener.firstWin) {

add(analisysBtn);
add(button_1);
add(LoadFileButton);
ifFirst = true;
ifFirst2 = true;
ifFirst3 = true;

test2 = 0;
test3 = 0;
test4 = 0;
windows.drawCompareWindow(g2);
windows.drawFourthWindow(g2);
windows.drawThirdWindow(g2);
windows.drawSecondWindow(g2);
windows.drawFirstWindow(g2);
}
}

最佳答案

您正在通过 paint(Graphics g) 方法向 GUI 添加组件,这是您永远不应该做的事情。这个方法会被重复调用,很多次超出了你的控制范围,而且它需要非常快。因此,不应包含任何程序逻辑、GUI 结构更改以及长时间运行的代码。

顺便说一句,使用 Swing 并重写 JPanel 的 paintComponent(Graphics g) 方法会比直接在顶级窗口中重写 Paint 方法要好得多。

此外,您应该始终记住在重写中调用 super 方法(通常作为第一个方法调用),以允许组件执行其内务绘制。

此外,我会使用 Swing Timer 而不是 while (true) 循环来运行我的动画循环。

关于Java Applet,重绘 60 次/秒方法和多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22290776/

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