比如这次使用这个窗口,导致窗口被移动到了右下角。 关闭这个窗口,下一次再启动的时候,就会自动出现在右下角。
要在Java中实现在上次关闭位置启动窗口,您需要执行以下步骤:
-
保存窗口位置:在窗口关闭时,获取窗口的位置信息(x和y坐标)并将其保存到持久存储中,例如配置文件或数据库。您可以使用
Window
类的getLocation()
方法获取窗口的位置信息。 -
加载窗口位置:在窗口启动时,从持久存储中加载上次保存的窗口位置信息。
-
设置窗口位置:在窗口启动后,使用加载的位置信息通过
Window
类的setLocation()
方法将窗口放置在正确的位置。package com.jcli.graphic_user_interface; import javax.swing.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.*; import java.util.Properties; /** 在上次关闭位置启动窗口 */ public class _02_MainWindow extends JFrame { private static final String CONFIG_FILE = "window.config"; public _02_MainWindow() { // 设置窗口标题和大小 setTitle("Main Window"); setSize(400, 300); // 添加窗口关闭事件监听器 addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { saveWindowPosition(); dispose(); System.exit(0); } }); // 加载上次保存的窗口位置 loadWindowPosition(); } private void saveWindowPosition() { try { Properties properties = new Properties(); properties.setProperty("x", String.valueOf(getX())); properties.setProperty("y", String.valueOf(getY())); FileOutputStream fileOut = new FileOutputStream(CONFIG_FILE); properties.store(fileOut, "Window Position"); fileOut.close(); } catch (IOException e) { e.printStackTrace(); } } private void loadWindowPosition() { File configFile = new File(CONFIG_FILE); if (configFile.exists()) { try { Properties properties = new Properties(); FileInputStream fileIn = new FileInputStream(CONFIG_FILE); properties.load(fileIn); fileIn.close(); int x = Integer.parseInt(properties.getProperty("x")); int y = Integer.parseInt(properties.getProperty("y")); setLocation(x, y); } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { SwingUtilities.invokeLater(() -> { _02_MainWindow window = new _02_MainWindow(); window.setVisible(true); }); } }