public class MyKursach extends JFrame { static MyKursach frame = new MyKursach(); //статик пришлось использовать, т.к. это стартовая форма и ее запуск сидит в static void main Form2 frame2 = new Form2(); public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { //на форумах прочитал, что лучше проделывать подобные операции с помощью этой дичи, это как-то связанно с потоками, я не особо вникал, а вообще можно обойтись только одной строчкой "frame.setVisible(true);" public void run() { try { frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } public void actionPerformed(ActionEvent arg0) { EventQueue.invokeLater(new Runnable() { public void run() { try { frame.setVisible(false); frame2.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); }