Flickering Problems

Hello, im trying to create a simple 2d game but have run into huge problems when i try to draw the graphics. Every fifth second or so my monitor is flickering badly wich is very annyoing. Here is the source, any help is very appriciated:

import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.image.BufferStrategy;
import javax.swing.*;

public class Game extends JFrame implements Runnable {
	
	final int SCREEN_WIDTH = 320;
	final int SCREEN_HEIGHT = 240;
	final int BIT_DEPTH = 16;
    final int REFRESH_RATE = 60;
    final int FPS = 60;
    
    float y,x,dx,dy;
    Image img1;
    
    //private InputManager inputManager = new InputManager();
	
	public static void main(String[] args){
		new Game().init(false);
	}
	
	void init(boolean fullscreen){
		setTitle("test");
		GraphicsConfiguration gc = getGraphicsConfiguration();
		GraphicsDevice gd = gc.getDevice();
		
		if(fullscreen) {
			setUndecorated(true);
	        gd.setFullScreenWindow(this);
	        gd.setDisplayMode(new DisplayMode(SCREEN_WIDTH,SCREEN_HEIGHT,BIT_DEPTH, REFRESH_RATE));
	     }
		
	     else {
	        setBounds(0,0,SCREEN_WIDTH,SCREEN_HEIGHT);
	        setVisible(true);
	     }
		
	     //remove cursor
		   	Image cursorImage = Toolkit.getDefaultToolkit().getImage("sprites/transparent.gif");
			Cursor blankCursor = Toolkit.getDefaultToolkit().createCustomCursor(cursorImage, new Point( 0, 0), "" );
			setCursor( blankCursor );
			//
	     
	     setResizable(false);
	     setIgnoreRepaint(true);

	     //addKeyListener(inputManager);
	     
	     img1 = loadImage("test.png");
	     x = 40; y = 50; dx = 1;

	     Thread t = new Thread(this);
	     t.start();
	}
	
	public Image loadImage(String filename){
		return new ImageIcon("images/"+filename).getImage();
	}
	
	public void run(){
	     final int NANO_FRAME_LENGTH = 1000000000/FPS;
	     long startTime = System.nanoTime();
	     int frameCount = 0;

	     while(true) {
	        BufferStrategy bs = getBufferStrategy();
	        Graphics2D g = (Graphics2D)bs.getDrawGraphics();
	        
	        if(x < 0 || x > 320)dx = -dx;
	        x += dx;
	        //misc rendering
	        g.setColor(Color.BLUE);
	        g.fillRect(0,0,SCREEN_WIDTH,SCREEN_HEIGHT);
	        g.drawImage(img1,Math.round(x),Math.round(y),null);
	        bs.show();
	        frameCount++;
	        // note:System.nanoTime in 1.5+
	        while((System.nanoTime()-startTime)/NANO_FRAME_LENGTH <frameCount) {
	           Thread.yield();
	        }
	     }
	}
}