`

swing 退出时保存界面信息

阅读更多

1,swing工具启动时读取配置文件

/***
	 * 读取配置文件
	 * @throws IOException
	 */
	private void readConfig() throws IOException{
		configFile=new File(configFilePath);
		if(configFile.exists()){
			InputStream inStream=new FileInputStream(configFile);
			props.load(inStream);
			inStream.close();//及时关闭资源
		}
		String shareUrl=getPropValue(PROP_KEY_SHARE_URL);
		String picUrls=getPropValue(PROP_KEY_PIC_URLS);
//		String qrCodeText=getPropValue(PROP_KEY_QR_CODE_TEXT);
		//要加密或解密的原文件
//		String encryptedSrcfile=getPropValue(PROP_KEY_ENCRYPTED_SRCFILE);
		String qrComboboxStr=getPropValue(PROP_KEY_QR_CODE_COMBOBOX);
		if(!ValueWidget.isNullOrEmpty(shareUrl)){
			urlTextField.setText(shareUrl);
			textField_1.setText(shareUrl);
		}
		if(!ValueWidget.isNullOrEmpty(picUrls)){
			ComponentUtil.fillComboBox(picPathComboBox, picUrls);
			
		}
	
		setSwingInput(sharedPicTextField, PROP_KEY_PIC_URL);
		
		setSwingInput(redTF, PROP_KEY_COLOR_RED);
		setSwingInput(greenTF, PROP_KEY_COLOR_GREEN);
		setSwingInput(blueTF, PROP_KEY_COLOR_BLUE);
		
		setSwingInput(queryStringPanel.getQueryStringTField(), PROP_KEY_QUERY_STRING2JSON);
		setSwingInput(queryStringPanel.getToUrlEncodedTField_1(), PROP_KEY_HAVE_URL_DECODED);
		setSwingInput(queryStringPanel.getURLEncodedTF(), PROP_KEY_HAVE_URL_ENCODED);
		
		/***
		 * 生成二维码中的下拉框
		 */
		ComponentUtil.fillComboBox(qrCodePanel.getQrComboBox(), qrComboboxStr);
	
		setSwingInput(qrCodePanel.getInputQRTextArea(), PROP_KEY_QR_CODE_TEXT);
	
		setSwingInput(customEncryptPanel.getSourceTextField(), PROP_KEY_ENCRYPTED_SRCFILE);
	}
	

 

该方法是在什么时候调用呢?

在界面渲染的最后面

 

该方法的功能:

读取硬盘上的配置文件,初始化到界面表单元素

 

 

2,关闭时保存界面信息到配置文件

/***
     * 保存到配置文件中
	 * @throws IOException 
     */
    public void saveConfig() throws IOException{
        if(!configFile.exists()){
            try {
                SystemHWUtil.createEmptyFile(configFile);
            } catch (IOException e) {
                e.printStackTrace();
                GUIUtil23.errorDialog(e);
            }
        }
        CMDUtil.show(configFilePath);//因为隐藏文件是只读的
        if(ValueWidget.isNullOrEmpty(props)){
        	props= new Properties();
        }
        //分享的url
        String url2=urlTextField.getText();
        if(!ValueWidget.isNullOrEmpty(url2)){
        	props.setProperty(PROP_KEY_SHARE_URL, url2);
        }
        String picUrl2=sharedPicTextField.getText();
        if(!ValueWidget.isNullOrEmpty(picUrl2)){
        	props.setProperty(PROP_KEY_PIC_URL, picUrl2);
        }
        
        String redColor2=redTF.getText();
        if(!ValueWidget.isNullOrEmpty(redColor2)){
        	props.setProperty(PROP_KEY_COLOR_RED, redColor2);
        }
        String greenColor2=greenTF.getText();
        if(!ValueWidget.isNullOrEmpty(greenColor2)){
        	props.setProperty(PROP_KEY_COLOR_GREEN, greenColor2);
        }
        String blueColor2=blueTF.getText();
        if(!ValueWidget.isNullOrEmpty(blueColor2)){
        	props.setProperty(PROP_KEY_COLOR_BLUE, blueColor2);
        }
        
        String queryString2=queryStringPanel.getQueryStringTField().getText();
        if(!ValueWidget.isNullOrEmpty(queryString2)){
        	props.setProperty(PROP_KEY_QUERY_STRING2JSON, queryString2);
        }
        
        String toUrlEncoded2=queryStringPanel.getToUrlEncodedTField_1().getText();
        if(!ValueWidget.isNullOrEmpty(toUrlEncoded2)){
        	props.setProperty(PROP_KEY_HAVE_URL_DECODED, toUrlEncoded2);
        }
        
        String URLEncoded2=queryStringPanel.getURLEncodedTF().getText();
        if(!ValueWidget.isNullOrEmpty(URLEncoded2)){
        	props.setProperty(PROP_KEY_HAVE_URL_ENCODED, URLEncoded2);
        }
        
        setCombox(PROP_KEY_PIC_URLS, sharedPicTextField, picPathComboBox);

        setCombox(PROP_KEY_QR_CODE_COMBOBOX, qrCodePanel.getInputQRTextArea(), qrCodePanel.getQrComboBox());
        
        String inputQRTextAreaText=qrCodePanel.getInputQRTextArea().getText();
        if(!ValueWidget.isNullOrEmpty(inputQRTextAreaText)){
        	props.setProperty(PROP_KEY_QR_CODE_TEXT, inputQRTextAreaText);
        }
        
        String sourceTextFieldText=customEncryptPanel.getSourceTextField().getText();
        if(!ValueWidget.isNullOrEmpty(sourceTextFieldText)){
        	props.setProperty(PROP_KEY_ENCRYPTED_SRCFILE, sourceTextFieldText);
        }
        OutputStream out=new FileOutputStream(configFile);
        props.store(out, TimeHWUtil.formatDateTimeZH(null));
        out.close();//及时关闭资源
        CMDUtil.hide(configFilePath);
    }

 该方法在什么时候调用呢?

在关闭swing界面时调用



  

 

3,相关变量的声明

protected Properties  props= new Properties();
	/***
	 * 配置文件
	 */
	protected File configFile;
public static final String configFilePath=System.getProperty("user.home")+File.separator+ ".share.properties";
public static final String PROP_KEY_SHARE_URL="share_url";
	/***
	 * 分享的图片
	 */
	public static final String PROP_KEY_PIC_URLS="pic_urls";
	/***
	 * 用于保存"分享的图片"文本框中的内容
	 */
	public static final String PROP_KEY_PIC_URL="pic_url";
	/***
	 * 红色
	 */
	public static final String PROP_KEY_COLOR_RED="color_red";
	/***
	 * 绿色
	 */
	public static final String PROP_KEY_COLOR_GREEN ="color_green";
	/***
	 * 蓝色
	 */
	public static final String PROP_KEY_COLOR_BLUE="color_blue";
	/***
	 * 二维码文本
	 */
	public static final String PROP_KEY_QR_CODE_TEXT="qr_code_text";
	/***
	 * 要加密或解密的原文件
	 */
	public static final String PROP_KEY_ENCRYPTED_SRCFILE="encrypted_srcfile";
	/***
	 * 生成二维码输入框下面的下拉框
	 */
	public static final String PROP_KEY_QR_CODE_COMBOBOX="qr_code_combobox";

	/***
	 * 请求参数
	 */
	public static final String PROP_KEY_QUERY_STRING2JSON="json_querystring";
	/***
	 * 已经URL编码的内容
	 */
	public static final String PROP_KEY_HAVE_URL_ENCODED="url_encoded";
	/***
	 * 需URL编码的内容
	 */
	public static final String PROP_KEY_HAVE_URL_DECODED="url_decoded";
	

 

4,读取时把配置文件读取到Properties中

InputStream inStream=new FileInputStream(configFile);
			props.load(inStream);
			inStream.close();//及时关闭资源

 

5,持久化时,把Properties持久化到文件中

OutputStream out=new FileOutputStream(configFile);
        props.store(out, TimeHWUtil.formatDateTimeZH(null));
        out.close();//及时关闭资源

 

项目使用Java swing编写;

使用maven构建

项目源代码见附件

 

  • 大小: 65.7 KB
  • 大小: 51.6 KB
  • 大小: 35.4 KB
0
0
分享到:
评论

相关推荐

    具有图形界面的Java记事本程序

    一个Java程序,实现Windows记事本的功能,包括新建,打开,保存和另存为,退出,撤销,剪切,赋值,黏贴,删除,查找,替换,转到,全选,时间日期,自动换行,调整字体,状态栏,鼠标右键弹出菜单功能等

    基于Java Swing实现客户端服务端聊天室程序

    Java聊天室程序源 2 需求分析 2.1 业务需求 1. 与聊天室成员一起聊天。 2.... 3....当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,并将

    Java swing + Socket聊天室程序(分客户端和服务端)

    保存用户聊天信息。 2.2 系统功能模块 2.2.1 服务器端 1.处理用户注册 2.处理用户登录 3.处理用户发送信息 4.处理用户得到信息 5.处理用户退出 2.2.2 客户端 1.用户注册界面及结果 2.用户登录界面及结果 3....

    Java聊天室程序源代码(毕业设计)

    Java聊天室程序,使用swing和tcp Java聊天室程序源 2 需求分析 2.1 业务需求 1. 与聊天室成员一起聊天。 2. 可以与聊天室成员私聊。 3. 可以改变聊天内容风格。 4. 用户注册(含头像)、登录。 5. 服务器监控...

    Java课程设计报告-基于Java swing带GUI界面的中国象棋系统.doc

    本程序实现了五个功能键,即新游戏:开始一局新的对弈;悔棋:将棋子返回刚才所处位置;打开:调用以前保存的棋局;保存:将当前棋局保存;退出:退出本程序。

    基于java+swing+mysql的五子棋小游戏(高分课程设计+实训报告)

    (3)游戏初始化时,向双方显示玩家等级、逃逸次数等基本信息,玩家可选择是否开始和对手的游戏。 三、开发工具 使用IDEA+maven编写代码,网络编程+多线程+swing+mysql。整体代码使用了MVC架构,数据库部分使用了...

    基于Java+SQL Server开发(PC)学生管理系统【100010054】

    使用 Eclipse 开发环境,以 Java 语言为载体,以 Swing 工具类为主、Windows Builder 插件为辅进行 GUI 界面的设计,用 SQL Server 数据库进行学生信息的保存。 ​ 通过研究网上各种学生管理系统,汇总其优点,设计...

    java课程设计班级通讯录设计报告.doc

    开发环境分析 系统编程基于JAVA Swing的图形用户界面开发,数据信息连接后台为MySql数据库。 系统运行环境为运行Windows,具有JDK1.7以上Java编译环境和Eclipse3.0以上Java 编辑环境,Navicat for MySQL。 3. 系统...

    Java具有图形界面的记事本程序

    一个Java程序,实现Windows记事本的功能,包括新建,打开,保存和另存为,退出,撤销,剪切,赋值,黏贴,删除,查找,替换,转到,全选,时间日期,自动换行,调整字体,状态栏,鼠标右键弹出菜单功能等

    Bank1.9.rar

    在1.7的基础改变页面,用Swing写界面 TestBank是进入程序的主界面 通过登录按钮,跳转到登录界面进行登录,销毁当前页面 登录成功进入存款取款主界面 通过取款按钮进入取款页面,取款成功后回到存取款主界面...

    Java简易文本编辑器

    该文本编辑器实现功能较为简易,功能为新建,保存,打开,退出,修改背景颜色和字体颜色。图形界面基于swing开发工具包,使用该程序请先给IDE添加此包。

    JAVA-电子相册课程设计.doc

    (2)业务说明:当用户打开某一相册,点选自动播放时,背景音乐播出,退出背景音 乐消失。 (3)程序代码: public class autodisplayListener2 extends JFrame implements ActionListener{ int i=-1; JDialog dialog=...

    JAVA聊天室实验报告.doc

    8、Windowclose 为ChatRoom.java的内部类,负责监听聊天室界面的操作,当用户退出时返回给服务 器信息。 9、Clock.java 为客户端程序的一个小程序,实现的一个石英钟功能。(可选) 五、实现细节 概述:聊天室主要...

    基于JAVA的记事本设计报告.doc

    当选择新建、关闭、退出、保存时 " "有一定的保存文件的提示。 " "(三)、结构分析 " "(1)、菜单栏:利用类JMenuBar创建一个菜单条的实例menubar,并利用类Jme" "nu创建了四个菜单的实例menu1、menu2、menu3、...

    基于Java面向对象程序设计课程报告.doc.doc

    若玩家选择游戏菜单,将 出现四个选项: 新游戏(N)、退出游戏(E)、存盘退出(C)和继续游戏(S),选择新游戏则玩家开始游戏, 选择存盘退出将保存游戏记录并退出,选择继续游戏则读取保存记录玩家继续上次游戏 。...

    java-多线程下载器(支持断点续传、线程加减)包含源码和可运行jar包 第二版

    18、程序退出前会自动暂停所有正在下载的任务,并保存到临时文件中, 下次启动程序可以继续下载; 19、程序启动时,会在电脑中检查创建myDownloader下载器的相应文件夹, 用于保存临时文件和日志文件; 文件夹...

    超级有影响力霸气的Java面试题大全文档

     封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: ...

    基于Java的视频会议系统的实现.rar

    图形界面:可以使用JavaFX或Swing等GUI库来实现客户端的用户界面设计。 安全性考虑: 数据加密:对音视频数据和聊天内容进行加密处理,保障用户数据的机密性和完整性。 身份认证:采用安全的身份验证机制,确保只有...

Global site tag (gtag.js) - Google Analytics