我正在玩Java图形类,我只是想知道 - 什么时候需要调用方法repaint()
?我试着评论它,它似乎没有影响我的输出GUI。不过,我已经看到它在我读过的Java GUI代码中使用了很多。有谁会介意解释何时使用它,何时不使用它?repaint()Java中的方法
回答
在大多数应用程序中,这绝对不是必需的,因为它们会自动处理它(用于常见操作,例如更改按钮上的文本值并将数据添加到列表框中)。
通常,只有当你做出某种改变时,摆动才会自动取出 - 例如,你没有使用布局管理器并手动调整组件大小(因为通常布局管理器会重新绘制其布局管理器组件在必要时)。
当你启动你的应用程序时,你“画”你的GUI。
当你想重新绘制你的GUI时,你需要调用repaint()
,因为你已经改变了内部的东西。
如果你想删除一个按钮,你需要删除它(或使其不可见),那么你需要调用validate()
或repaint()
重新计算(重新绘制)GUI。
repaint()
刷新视图(组件),因此无论何时对组件进行任何更改,都必须调用它。举例来说,如果你旋转图形组件,您必须拨打电话到repaint()
才能看到含有成分的变化
谢谢你的解释!实际上,我正在尝试制作我的图形,以便当用户单击x轴(它是声速图)时,图形将放大图形的特定部分。我有点卡住了如何去做。你有什么想法? –
这就是我可能要做的事情:获取getX()和getY()给出的点的坐标。然后创建一个图形** g **,这将是我要显示和重新绘制(g)'的区域。 –
我能想到的唯一的东西:
new Thread() {
@Override
public void run() {
while (ClassName.this.isVisible()) {
ClassName.this.updateStatusLabel();
ClassName.this.validate();
ClassName.this.repaint(50L);
try {
Thread.sleep(1000);
} catch (final InterruptedException e) {
Log.log(e);
}
}
}
}.start();
假设你有上面的代码在JDialog的构造函数中。什么updateStatusLabel确实是检查一个布尔变量,公开或通过一个方法可设置,并将JLabel的图标设置为基础的布尔值。如果您不验证并重新绘制GUI,那么在另一个事件(很可能是用户触发的事件)被引发之前,修改将不会显示。而且,如果用户正在等待标签显示某个图标,那么可以说,它表示如果设备可通过Internet访问,他/她将永远不会互动(或者至少,您延迟了互动非常)。
- 1. Java-repaint()方案
- 2. repaint方法不使用的Java
- 3. repaint()Java中的方法不调用paint()方法?
- 4. Java repaint()方法并不总是有效
- 5. 使用repaint()方法
- 6. Java - 重绘方法repaint()不调用paintComponent()方法
- 7. JFrame或Jpanel中的repaint()方法?
- 8. Java中的repaint()方法是否需要计时器或操作?
- 9. Java中的repaint和paintComponent()
- 10. 如何调用repaint()方法?
- 11. Java repaint()/ update()
- 12. java repaint块jbutton
- 13. Java swing repaint GUI
- 14. Java AbstractTableModel repaint();
- 15. 是否有另一种方法在java中执行repaint()?
- 16. Java Swing忽略repaint()?
- 17. 在Android中,是否有类似的方法来重新绘制java中的repaint()?
- 18. 使用Java的JComponent repaint()
- 19. EDT和其他线程关系考虑repaint()方法java
- 20. 使用paint或repaint方法在applet上画线JAVA
- 21. Java中的repaint()方法在翻译后不会重新绘制我的Rectangle
- 22. Java Swing revalidate()和repaint()问题
- 23. 在java中使用update和repaint
- 24. repaint()未在Java程序中调用
- 25. 如何从applet中的其他方法调用repaint?
- 26. 在run()方法中用repaint()更新图形?
- 27. repaint()方法在无限for循环中如何表现?
- 28. 如何在游戏循环中使用repaint()方法
- 29. QGraphicsItem repaint
- 30. JPanel中的背景repaint
非常感谢! –