java - 它要我创建一个方法是什么?

标签 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();
    }
}

最佳答案

您的类不从任何内容扩展,因此 this.getBufferStrategy() 不存在于您的类的上下文中。

尝试从 java.awt.Canvas 扩展

话虽如此,混合重型和轻型组件时要小心,它们往往不能很好地协同工作。

我也会避免 Toolkit.getScreenSize() 因为它没有考虑屏幕上可能存在的任何“附加”元素(如任务栏)。

您“可以”使用frame.setExtendedState(MAXIMIZED_BOTH);来代替...

关于java - 它要我创建一个方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20482397/

相关文章:

java - 执行子字符串操作时包含分隔符

java - 组件必须有一个有效的对等体 - BufferStrategy

c - 如何确定每次读取系统调用要读取的合理字节数?

java - 一个平台上的 Java 中的 OutOfMemoryError,但另一个平台上没有

java - 无法打开 Eclipse

swing - 在 Fest 中实现匹配器的 Groovy 闭包

java - 如何在java中使面板向左或向右滑动?

java - 为什么我的程序可以在 JFrame 上运行,但不能在 JApplet 上运行?

java - 使用 createBufferStrategy() 的正确方法是什么?

java - 如何获得 Wicket 口 反馈 消息计数