Java 如何设置具有刷新率的JFrame?
我有一个2d游戏,除了图形,整个结构都是完全编码的。我只是更新JFrame的单个组件,它是一个包含50个图像的图形。每帧图像位于不同的位置,因此需要刷新率 为了绘制,我已经重写了paintComponent()方法,所以我真正需要做的就是每隔40毫秒重新绘制组件(同样,它只是一个图形) 如何设置每秒25帧的JFrame?这将使用。40毫秒的周期将产生25赫兹的频率Java 如何设置具有刷新率的JFrame?,java,jframe,Java,Jframe,我有一个2d游戏,除了图形,整个结构都是完全编码的。我只是更新JFrame的单个组件,它是一个包含50个图像的图形。每帧图像位于不同的位置,因此需要刷新率 为了绘制,我已经重写了paintComponent()方法,所以我真正需要做的就是每隔40毫秒重新绘制组件(同样,它只是一个图形) 如何设置每秒25帧的JFrame?这将使用。40毫秒的周期将产生25赫兹的频率 private final Timer timer = new Timer(40, this); 附录:计时器的ActionLis
private final Timer timer = new Timer(40, this);
附录:计时器的ActionListener
通过调用repaint()
来响应,它随后调用被重写的paintComponent()
方法
@Override
public void actionPerformed(ActionEvent e) {
this.repaint();
}
这使用了。40毫秒的周期将产生25赫兹的频率
private final Timer timer = new Timer(40, this);
附录:计时器的ActionListener
通过调用repaint()
来响应,它随后调用被重写的paintComponent()
方法
@Override
public void actionPerformed(ActionEvent e) {
this.repaint();
}
刷新JFrame是个坏主意。它是Swing中为数不多的重型部件之一。最好的办法是
- 识别包含动画的面板
- 创建一个扩展JPanel的类。i、 e.游戏窗格扩展JPanel
- 覆盖组件(无)
- 在JFrame中创建一个runner类
您的动画将更加平滑。并使用MVC和事件刷新UI的其他部分 问候,,
Stéphane刷新JFrame是个坏主意。它是Swing中为数不多的重型部件之一。最好的办法是
- 识别包含动画的面板
- 创建一个扩展JPanel的类。i、 e.游戏窗格扩展JPanel
- 覆盖组件(无)
- 在JFrame中创建一个runner类
您的动画将更加平滑。并使用MVC和事件刷新UI的其他部分 问候,,
Stéphane我想你不想用25 fps来更新JFrame,而是想更新它的一些内容。你使用Java3D吗?你使用OpenGL吗?你的显示面板(jpanel,widget,…)的父类是什么?这是一个广泛的问题,正如前面所说的,我认为是无法回答的。@Hovercraft-Full-Eels:现在应该足够具体了。如果需要更多的细节,请告诉我。我想你不想用25 fps更新JFrame,但要更新其中的一些内容。你使用Java3D吗?你使用OpenGL吗?你的显示面板(jpanel,widget,…)的父类是什么?这是一个广泛的问题,正如前面所说的,我认为是无法回答的。@Hovercraft-Full-Eels:现在应该足够具体了。告诉我是否需要更多详细信息。这只是添加到公共静态void main方法的末尾?@Will:Yes,只要您在上,通常在
setVisible()
之后。这只是添加到公共静态void main方法的末尾?@Will:Yes,只要您在上,通常在setVisible()之后)
。