gpt4 book ai didi

java - 如何在扩展 JPanel 的类中创建 bufferstrategy

转载 作者:行者123 更新时间:2023-12-02 06:21:02 24 4
gpt4 key购买 nike

我是 Java 初学者,在扩展 JPanel 但不扩展 canvas 的类中创建 bufferstaregy 时遇到困难。有人可以在这里展示如何添加缓冲策略吗?我编写了非常简化的代码来说明我的问题。我在 x 和 y 位置移动矩形,但是我看不到矩形高速平滑移动。我希望缓冲策略能够解决这个问题。我可能错了。无论如何,如果我想看到平滑的矩形移动,我应该在这里做什么?我将非常感谢任何帮助。我在这个位置上被困了几天。

import javax.swing.*;
import java.awt.*;
public class simpleAnimation {
public static void main(String args[]){
Runnable animation = new moveAnimation();
Thread thread = new Thread(animation);
thread.start();
}
}
// Creates window and performs run method
class moveAnimation implements Runnable{
JFrame frame;
int x = 0;
int y = 0;
boolean running = true;
moveAnimation(){
frame = new JFrame("Simple Animation");
frame.setSize(600,600);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void run() {
while(running == true){
if(x<=500 || y<=500){
x++;
y++;
}
frame.add(new draw(x, y)); // I create new object here from different class which is below
frame.setVisible(true);
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}

}

}
}

// I use this class to draw rect on frame
class draw extends JPanel{
int x;
int y;
draw(int x, int y){
this.x=x;
this.y=y;
}
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D)g;
g2.setColor(Color.BLACK);
g2.fillRect(0,0,getWidth(),getHeight());
g2.setColor(Color.GREEN);
g2.fillRect(x,y,50,50);
}
}

最佳答案

您不能真正在仅使用该类扩展 JPanel 的类上创建 BufferStrategy 最好的选项是太设置“setDoubleBuffered” true 这允许 2 的缓冲区,但它并不能完全创建一个可访问的 bufferStrategy 我会建议使用添加到 JPanel 的 Canvas,这样您可以获得 bufferStrategy 以及更平滑、更好控制的图形

关于java - 如何在扩展 JPanel 的类中创建 bufferstrategy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17796089/

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