gpt4 book ai didi

java - 重新绘制 JComponent 的正确方法

转载 作者:行者123 更新时间:2023-12-02 02:47:41 30 4
gpt4 key购买 nike

所以,我参加了 Java 方面的 AP 类(class),在类(class)中,我们从未真正讨论过 repaint() 以及如何正确使用它。我也通过互联网进行了搜索,但我个人还没有找到关于调用 repaint() 的标准方法的任何答案。我们是否应该像下面这样从 main 类调用 repaint() 方法?

import java.awt.*;
import javax.swing.*;

public class RepaintExample{

public static void main(String[] args){

JFrame frame = new JFrame();
JComponent component = new JComponent();
frame.add(component);
frame.repaint();
}

}

或者我会像这样调用JComponent.repaint()

import java.awt.*;
import javax.swing.*;

public class RepaintExample{

public static void main(String[] args){

JFrame frame = new JFrame();
JComponent component = new JComponent();
frame.add(component);
component.repaint();
}

}

或者,这两种方法都是错误的,应该从 paintComponent 调用 JComponent.repaint(),如下所示:

import java.awt.*;
import javax.swing.*;

public class ComponentRepaintExample extends JComponent{

public void paintComponent(Graphics g){

//Draw stuff
for(int i = 0; i < 10; i++){
//Draw stuff
this.repaint();
}
}

}

这三种方法很可能都是错误的。任何有关如何正确使用 repaint() 方法的帮助都将受到赞赏。整个主题对我来说非常模糊,所以如果我使用的任何术语不正确,我深表歉意。提前致谢。

最佳答案

你认为为什么需要调用repaint()?

当组件的属性更改时,Swing 组件会自动调用 repaint() 方法。

例如,如果您有一个 JLabel 并且调用 setText(...)setIcon(...),那么这些方法将自动调用 repaint() .

你永远不会从绘画方法中调用 repaint()。

如果您正在进行自定义绘制,那么您的代码的结构应该像任何其他 Swing 组件一样。也就是说,您为自定义组件创建 getter/setter 方法来更改组件的属性。在 setter 方法中,您调用 repaint()。

关于java - 重新绘制 JComponent 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44348344/

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