The implementation of the setVisible(true) inherited function calls the inherited show() method. Unfortunately you override show to call setVisible() therefore creating an infinite loop.
If you really want a show() method, call it something else. Otherwise just use the one that is inherited since it does the same thing.
Also check your imports, you're importing "import javax.swing.*;" twice.