Display class containing a Canvas in a JFrame
one minor issue - no redundant code...

canvas = new Canvas();
canvas.setPreferredSize(new Dimension(width, height));
canvas.setMaximumSize(new Dimension(width, height));
canvas.setMinimumSize(new Dimension(width, height));
canvas.setFocusable(false);


you should use

canvas.setPreferredSize(dim); //see below
canvas.setMaximumSize(dim);
canvas.setMinimumSize(dim);


that leads to another issue:
create a default constructor that doesn't require a size

private static final int DEFAULT_WIDTH = 100;
private static final int DEFAULT_HEIGHT = 100;
public Display(String title){
    this(title, DEFAULT_WIDTH, DEFAULT_HEIGHT);
}


and use this parametrized constructor:

//private int width, height; TODO remove: no more required
private static final Dimension dim;
public Display(String title, int width, int height){
    this.dim = new Dimension(width, height);
    createDisplay();
}


another issue would be removing unrequired attributes - whats the sense of keeping the title? just forward it...

//private String title; TODO remove: no more required
public Display(String title, int width, int height){
    this.dim = new Dimension(width, height);
    createDisplay(title);
}

private void createDisplay(final String title){
    frame = new JFrame(title);
    ...
}