我正在尝试为我正在处理的游戏创建菜单但是当我尝试使用GetBufferStrategy时,Eclipse告诉我创建一个方法。我不想要一种方法。我希望它能得到缓冲策略。我是java的新手所以请解释为什么我的代码错了所以我再也不重复了。
package homeScreen;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.swing.JFrame;
public class homeScreen {
static Toolkit tk = Toolkit.getDefaultToolkit();
public static final int WIDTH = (int) tk.getScreenSize().getWidth();
public static final int HEIGHT = (int) tk.getScreenSize().getHeight();
BufferedImageLoader imageLoader = new BufferedImageLoader();
private static homeScreen home = new homeScreen();
private BufferedImage backgroundImage = null;
private BufferedImage Buttons = null;
public static void main(String args[]){
JFrame frame = new JFrame("Game");
frame.pack();
frame.setSize(WIDTH, HEIGHT);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
home.loadImages();
}
private void loadImages() {
try {
backgroundImage = imageLoader.loadImage("/res/HomeScreen.png");
Buttons = imageLoader.loadImage("/res/MainScreenButtons.png");
} catch (IOException e) {
e.printStackTrace();
}
home.display();
}
private void display(){
BufferStrategy buffStrat = this.getBufferStrategy();
Graphics g = buffStrat.getDrawGraphics();
if(buffStrat == null){
createBufferStrategy(3);
return;
}
////////////////////////////////////////////////
////////////////////////////////////////////////
g.dispose();
buffStrat.show();
}
}
答案 0 :(得分:1)
您的课程不会延伸到任何内容,因此在您的课程中不存在this.getBufferStrategy()
。
尝试从java.awt.Canvas
改为
话虽如此,小心混合重量和重量轻的组件,它们往往不能很好地配合。
我也会避免使用Toolkit.getScreenSize()
,因为它没有考虑屏幕上可能出现的任何“其他”元素(如任务栏)。
您“可以”使用frame.setExtendedState(MAXIMIZED_BOTH);
而不是......