Creating an Interleaved VBO and using it [LWJGL]

I am starting out in the gaming world and i have been going at it for a while but i have run into the problem of speed… I am moving to VBO’s in LWJGL, but i have run into the problem of my code wont work(or at least i don’t understand how to use VBO’s.

I Can give my code currently and please help.

public class Sim extends Thread {

public static boolean running;
public static Render renderer;

public Sim() {
    super("MYSim Main");
    Sim.running = true;
}

public static void startDisplay() {
    try {
        Display.setDisplayMode(new DisplayMode(800, 600));
        Display.create();
        System.out.println("Display Created in Thread: " + Thread.currentThread().getName());
    } catch (LWJGLException e) {
        e.printStackTrace();
        System.exit(0);
    }
}

@Override
public void run() {
    ////////////Must Be FirstThing Run/////////////
    Sim.startDisplay();
    ////////////Must Be FirstThing Run/////////////
    this.init();

    this.main();
}

public void main() {
    Render.Init();

    while (running) {

        float[] positions = new float[]{0, 0, 0, 1, 1, 0, 1, 0, 0};
        float[] colors = new float[]{0, 0, 0, 1, 1, 0, 1, 0, 0};
        // Put our data in the proper format: byte buffers
        FloatBuffer positionBuffer = BufferUtils.createFloatBuffer(positions.length);
        positionBuffer.put(positions);
        positionBuffer.flip();
        FloatBuffer colorBuffer = BufferUtils.createFloatBuffer(colors.length);
        colorBuffer.put(colors);
        colorBuffer.flip();
        //VertexBufferUtils.vertexBufferData(Render.vertexBufferID, positionBuffer);

        //Display.update();
    }
}

private void init() {
    Sim.renderer = new Render();
}

class Render:

public class Render {

public static int vertexBufferID;
public static int colourBufferID;
private static int numberIndices;
private static int indexBufferID;
private static int maxIndex;

public Render() {
    System.out.println("HELLO!!!!");

}

private static void CreateBufferIDs() {
    IntBuffer buffer = BufferUtils.createIntBuffer(2);
    GL15.glGenBuffers(buffer);
    vertexBufferID = buffer.get(0);
    colourBufferID = buffer.get(1);
}

public static void Init() {
    Render.CreateBufferIDs();

    GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vertexBufferID);
    GL11.glVertexPointer(3, GL11.GL_FLOAT, 0, 0);

    GL11.glEnableClientState(GL11.GL_COLOR_ARRAY);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, colourBufferID);
    GL11.glColorPointer(4, GL11.GL_FLOAT, 0, 0);

    //If you are not using IBOs:
    GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, numberIndices);

    //If you are using IBOs:
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, indexBufferID);
    GL11.glDrawElements(GL11.GL_TRIANGLES, numberIndices, GL11.GL_UNSIGNED_INT, 0);

    //The alternate glDrawElements.
    GL12.glDrawRangeElements(GL11.GL_TRIANGLES, 0, maxIndex, numberIndices,
            GL11.GL_UNSIGNED_INT, 0);
}

}

First: Use one buffer.
Second: Instead of putting all the positions together and all the colors together (PPPCCC), group them by vertex (PCPCPC). And if you have texture coords too, it would be (PTCPTCPTC) etc.

And to use it, you use stride and offset variables.

Also, please use [.code][/.code] tags (without the dot) when posting code.

Ok will do

This might be of some help.