Java JPanel中的缓冲策略?
我正在尝试使用JFrame/JPanel转换一个使用Canvasto的游戏。。以前我让游戏对象扩展画布并实现Runnable 然后创建了一个JFrame并将其传递给画布 以前是什么:(作品) 但是我想在JPanel上做图形,而不是画布,并将其传递给JFrame。。但是它不起作用Java JPanel中的缓冲策略?,java,swing,Java,Swing,我正在尝试使用JFrame/JPanel转换一个使用Canvasto的游戏。。以前我让游戏对象扩展画布并实现Runnable 然后创建了一个JFrame并将其传递给画布 以前是什么:(作品) 但是我想在JPanel上做图形,而不是画布,并将其传递给JFrame。。但是它不起作用 public class Game extends JPanel implements Runnable{ private void render() { // TODO
public class Game extends JPanel implements Runnable{
private void render() {
// TODO Auto-generated method stub
BufferStrategy bs = this.getBufferStrategy(); // error here
if(bs==null){
createBufferStrategy(3); //error here
return;
}
public static void main (String[] args){
Game game = new Game();
game.setPreferredSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE));
game.setMaximumSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE));
game.setMinimumSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE));
JFrame frame = new JFrame(game.TITLE);
frame.add(game);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
game.start();
}
}
Exception in thread "Thread-1" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)
困惑…您的代码甚至不应该编译。JPanel没有公共的
getBufferStrategy()
方法。因此,您应该在这一行中得到一个编译错误:
BufferStrategy bs = this.getBufferStrategy();
在Swing中,更典型的是使用缓冲策略。我认为可能只有重量级组件才可以使用BufferStrategy。1)要更快获得更好的帮助,请发布一篇文章。2) 对代码块使用一致的逻辑缩进。代码缩进旨在帮助人们理解程序流程。+1
BufferStrategy
是一种抽象不同主机平台上的功能的方法。如果没有相反的证据,我会依赖JComponent
继承的策略。
BufferStrategy bs = this.getBufferStrategy();