我想要创建一个方法是什么?

时间:2013-12-09 22:42:35

标签: java swing bufferstrategy

我正在尝试为我正在处理的游戏创建菜单但是当我尝试使用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();
    }
}

1 个答案:

答案 0 :(得分:1)

您的课程不会延伸到任何内容,因此在您的课程中不存在this.getBufferStrategy()

尝试从java.awt.Canvas改为

话虽如此,小心混合重量和重量轻的组件,它们往往不能很好地配合。

我也会避免使用Toolkit.getScreenSize(),因为它没有考虑屏幕上可能出现的任何“其他”元素(如任务栏)。

您“可以”使用frame.setExtendedState(MAXIMIZED_BOTH);而不是......