A tela não é desenhada para o JFrame

Estive procurando uma resposta para isso, reescrevi meu código várias vezes, ainda nada. Essencialmente, estou tentando desenhar em um JFrame contendo apenas um retângulo simples, mas cada vez que nada aparece no quadro - é apenas um espaço em branco.

package com.Graphics;

import java.awt.*;
import java.awt.image.*;
import javax.swing.*;

public class GraphicsMain {

    public static void main(String[] args) {

        GraphicsMain myGraphics = new GraphicsMain();

        myGraphics.createDisplay();

    }

    void createDisplay(){

        int width = 500;
        int height = 500;
        String title = "TestFrame";
        Graphics g;

        Canvas myCanvas = new Canvas();
        JFrame myFrame = new JFrame(title);

        myFrame.setVisible(true);
        myFrame.setResizable(false);
        myFrame.setSize(width, height);
        myFrame.setLocationRelativeTo(null);
        myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        myCanvas.setPreferredSize(new Dimension(500, 500));
        myCanvas.setMaximumSize(new Dimension(500, 500));
        myCanvas.setMinimumSize(new Dimension(500, 500));

        myFrame.add(myCanvas);
        myFrame.pack();

        myCanvas.createBufferStrategy(2);

        BufferStrategy bs = myCanvas.getBufferStrategy();

        g = bs.getDrawGraphics();

        g.setColor(Color.red);
        g.fillRect(10, 50, 50, 70);

        bs.show();
        g.dispose();
    }
}

Sei que as convenções aqui são terríveis - isso é apenas uma prática para mim com gráficos. Normalmente, eu dividiria isso em classes separadas etc. Qualquer ajuda é muito apreciada. Obrigado.

questionAnswers(1)

yourAnswerToTheQuestion