gpt4 book ai didi

java - 随机调用paintComponent

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

我在使用 Swing 时遇到了问题,我试图了解 PaintComponent 是如何工作的,但我只是不明白为什么在这种情况下它会被调用两次甚至三次(它似乎是随机调用给我的) .

package paintComponentTest;

import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class UI {

public static void main(String[] args) {
JFrame testFrame = new JFrame();

TestPanel testPanel = new TestPanel();
testFrame.setContentPane(testPanel);

testFrame.setSize(500, 500);
testFrame.setVisible(true);
}
}

class TestPanel extends JPanel {

@Override
public void paintComponent(Graphics g) {
System.out.println("Called");
}
}

我正在开发一个不同的项目,我的paintComponent也被调用了几次,而我希望它只被调用一次,这阻止了我继续前进。

提前致谢!

最佳答案

基本上,绘画超出了您的控制范围,您无能为力。

当重绘管理器由于某些事件而决定组件需要重新绘制时,例如组件被重新调整大小(直接或因为父容器),

paintComponent 被调用(间接)已调整大小)或已变得可显示(现在在屏幕上可见或添加到可显示的组件中)以及任意数量的系统事件。

您需要做的第一件事(除了在进行任何自定义绘画之前调用 super.paintComponent 之外)是放弃您可能认为自己对绘画过程拥有控制权的幻想。

接下来,您应该通读Painting in AWT and Swing并了解绘画过程的工作原理。

关于java - 随机调用paintComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22701312/

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