Using the below code, graphics won't render on the screen no matter what I try.
package local.ryan.grid;
import java.awt.BufferCapabilities;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferStrategy;
import javax.swing.JFrame;
public class Game implements Runnable {
    public boolean isRunning = false;
    private long lastTime;
    private double fps;
    public int gamestage = 0;
    public Frame frame = new Frame(2, 300, 300, "Ok");
    public static void main(String[] args) throws InterruptedException {
        Thread game = new Thread(new Game());
        game.start();
    }
    public void run() {
        start();
        while(isRunning) {
            lastTime = System.nanoTime();
            try {
                // Limit Each Frame, to 60 fps.
                // Prevents performance issues with multiple objects.
            Thread.sleep(1000 / 60); // 1000 miliseconds (1 second) / 60 frames-per-second ~ 17 ms.
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            render();
            fps = 1000000000D / (System.nanoTime() - lastTime); //one second(nano) divided by amount of time it takes for one frame to finish
            lastTime = System.nanoTime();
            // Change to integer, to remove decimals.
            System.out.println("FPS: " + (int) fps + ".");
        }
    }
    public void render(){
           BufferStrategy bs = frame.getBufferStrategy();
           if (bs== null){
           frame.createBufferStrategy(3);
           return;
           }
           Graphics2D g = (Graphics2D)bs.getDrawGraphics();
            //Draws a background and a line for testing
            g.setColor(Color.GRAY);
            g.drawRect(0, 0, 500, 500);
            g.setColor(Color.BLACK);
            g.drawLine(50, 50, 200, 50);
            //Displays the graphics to the frame
            frame.update(g);
            g.dispose();
            bs.show();
        }
    public void start() {
        if(isRunning)
            return;
        isRunning = true;
    }
    public void stop() {
        if(!isRunning)
            return;
        isRunning = false;
    }
}
I also have a class called Frame to create a frame:
package local.ryan.grid;
import javax.swing.JFrame;
@SuppressWarnings("serial")
public class Frame extends JFrame {
    public Frame(int scale, int x, int y, String title) {
        setTitle(title);
        setSize(x, y);
        setResizable(false);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
    public JFrame getFrame() {
        return this;
    }
}
 
    