所以,我在java上学过AP课程,在课堂上,我们从未真正考虑过<div class="out">
<div class="A">
<div class="B">
</div>
</div>
</div>
,以及如何正确使用它。我也在互联网上搜索过,我个人在调用repaint()
的标准方式上没有找到任何答案。我们是否应该从repaint()
类调用repaint()
方法,如下所示?
main
或者我会调用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();
}
}
应该从JComponent.repaint()
调用,如下所示:
paintComponent
很有可能这三种方法都是错误的。任何有关如何正确使用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();
}
}
}
方法的帮助表示赞赏。整个主题对我来说非常笼罩,所以如果我使用的任何术语不正确,我会道歉。提前谢谢。
答案 0 :(得分:2)
为什么你认为你需要调用repaint()?
当组件的属性发生更改时,Swing组件会自动调用repaint()方法。
例如,如果你有一个JLabel并且你调用setText(...)
或setIcon(...)
,那么这些方法将自动调用repaint()。
你永远不会从绘画方法中调用repaint()。
如果您正在进行自定义绘制,那么您的代码应该像任何其他Swing组件一样进行结构化。那就是为自定义组件创建getter / setter方法以更改组件的属性。在setter方法中,您调用repaint()。