我无法在Eclipse中运行此java文件

时间:2013-01-31 01:48:16

标签: java

当我尝试在eclipse中作为Java项目运行时,没有任何反应,但如果我把它全部放在“public static void main(String [] args)”中,那么它可以工作,但这不是它如何在我正在学习的视频

 package Indeed;


import static org.lwjgl.opengl.GL11.*;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import org.lwjgl.opengl.*;
import org.lwjgl.*;
import org.lwjgl.input.Mouse;
import org.lwjgl.input.Keyboard;    


public class InputDemo {


public static void main(String[] args) {

}

List<Box> shapes = new ArrayList<Box>(16);

public InputDemo() {

    try {
        Display.setDisplayMode(new DisplayMode(640, 480));
        Display.setTitle("Hello, LWJGL!");
        Display.create();
    } 
    catch (LWJGLException e) 
    {

        e.printStackTrace();
    }

    shapes.add(new Box(15, 15));
    shapes.add(new Box(100, 150));

    //Initialization code OpenGL
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, 640, 480, 0, 1, -1);
    glMatrixMode(GL_MODELVIEW);

    while(!Display.isCloseRequested())
    {
        //Render
        glClear(GL_ACCUM_BUFFER_BIT);

        if(Keyboard.isKeyDown(Keyboard.KEY_ESCAPE))
        {
            Display.destroy();
            System.exit(0);
        }

        for(Box box : shapes)
        {
            box.draw();
        }




        Display.update();
        Display.sync(60);
    }

    Display.destroy();
}

private static class Box
{
    public int x, y;
    private float red, blue, green;
    public boolean selected = false;

    Box (int x, int y)
    {
        this.x = x;
        this.y = y;

        Random rand = new Random();
        red = rand.nextFloat(); 
        blue = rand.nextFloat();
        green = rand.nextFloat();
    }

    void update(int dx, int dy)
    {
        x += dx;
        y += dy;
    }

    boolean inBounds(int mouseX, int mouseY)
    {
        if(mouseX > x && mouseX < x + 50 && mouseY > y && mouseY < y + 50)
        {
            return true;
        }
        else
        {
            return false;
        }

    }

    void RandomColor()
    {
        Random rand = new Random();
        red = rand.nextFloat(); 
        blue = rand.nextFloat();
        green = rand.nextFloat();
    }

    void draw()
    {
        glColor3f(red, green, blue);

        glBegin(GL_QUADS);
        glVertex2f(x, y);
        glVertex2f(x + 50, y);
        glVertex2f(x+ 50, y+ 50);
        glVertex2f(x, y + 50);
        glEnd();
    }
}


}

1 个答案:

答案 0 :(得分:4)

你不需要把它全部放在main函数中,但要注意只有运行它的代码才会运行。如果您的视频另有说明,则向您撒谎

您已从构造函数中调用所有代码。理想情况下,您可以将其移至main函数。如果您选择保持原样,则需要创建类的实例以便执行它。因此,您可以将InputDemo demo = new InputDemo();添加到主函数中,这可能就足够了。