即使在关闭打开单独的jframe之后,如何在jframe中存储信息,以便在重新打开第一个jframe时,仍会列出相同的信息?
所以基本上我有一个带搜索按钮和个人资料按钮的jFrame。视图配置文件按钮将您带到一个不同的Jframe,其中包含所有"搜索历史记录"被储存了。但是,每当您返回主页面并再次打开配置文件时,配置文件将刷新并再次启动。我希望按钮再次打开完全相同的窗口,而不是GUI的新窗口。我怎么做?
答案 0 :(得分:0)
如果我的问题正确,那么您需要的是secondFrame.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
但是,建议不要使用2个JFrame。您可以使用JDialog代替“第二帧”。
此外,如果您在按钮中初始化它的动作,则每次单击按钮时,侦听器都无法工作,它将创建一个新的Dialog。所以你必须先将它初始化。看一下这个例子:
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 a.k.a secondFrame,然后关闭它,然后再次按下该按钮,文本字段将显示其文本。