Если я правильно понял ваш вопрос, вам нужно: secondFrame.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
Однако иметь 2 JFrames не рекомендуется.Вместо этого вы можете использовать JDialog для своего «второго кадра».
Также, если вы инициализируете его в действии вашей кнопки, слушатель не будет работать, так как каждый раз, когда нажимается кнопка, он создает новый диалог.Поэтому вы должны инициализировать его раньше.Взгляните на этот пример:
package test;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public class TestFrame extends JFrame {
private JDialog secondFrame;
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
new TestFrame().setVisible(true);
});
}
public TestFrame() {
super("Frame");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new FlowLayout());
initializeSecondFrame();
JButton button = new JButton("Show \"Second Frame\".");
button.addActionListener(e -> {
secondFrame.setVisible(true);
});
getContentPane().add(button);
setSize(300, 300);
}
private void initializeSecondFrame() {
secondFrame = new JDialog(this);
// When "X" button is presed, dialog does nothing.
secondFrame.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
secondFrame.getContentPane().setLayout(new FlowLayout());
JTextField textField = new JTextField(10);
secondFrame.getContentPane().add(textField);
secondFrame.setSize(300, 300);
}
}
Единственное, что делает кнопка, это делает диалог (который уже запущен) видимым.Теперь, если вы редактируете TextField в диалоговом окне, также называемом secondFrame, и закрываете его, а затем снова нажимаете кнопку, текстовое поле будет иметь свой текст.