В вашем звонке this.setVisible(false)
, this
, вероятно, относится к кнопке, а не к рамке.
Вам нужно вызывать setVisible () для кадра, а не для кнопки.
Также убедитесь, что вы вызываете dispose () для фрейма, чтобы очистить все ресурсы.
Кроме того, вы также должны использовать
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
во время создания рамки, чтобы убедиться, что окна правильно закрыты и расположены, когда пользователь нажимает «стандартную» кнопку закрытия в верхнем правом углу (в Windows).
Этот урок также может помочь вам лучше понять, что происходит:
http://download.oracle.com/javase/tutorial/uiswing/components/frame.html