`

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
分享到:
评论

相关推荐

    swing中文乱码问题(Linux和window)

    保存并退出。 **第三步:** 更新环境变量。执行 `sudo dpkg-reconfigure locales` 命令,选择支持中文的字符集,如 `zh_CN.UTF-8`。 **第四步:** 重启终端或重新登录以使更改生效。 **第五步:** 检查Java环境...

    简单swing电话本

    - 在读取和写入联系人信息时,会涉及到文件的打开、读取和写入操作。Java提供了`FileReader`、`FileWriter`、`BufferedReader`和`BufferedWriter`等类进行文件操作。 6. **JOptionPane** - 用于弹出对话框,向...

    swing控件及事件

    Swing控件与事件在Java GUI编程中占有重要的地位,特别是在构建复杂的用户界面时,如学生管理系统。JBuild2006是一款早期的Java开发工具,它提供了对Swing库的支持,帮助开发者创建桌面应用程序。在这个学生管理系统...

    汽车租赁swing项目.zip

    2. **菜单栏**:使用JMenuBar类创建,包含各种JMenuItem,用于执行不同的功能,比如打开、保存、退出等。 3. **租赁表单**:使用各种输入组件(如JTextField、JComboBox)收集用户租车信息,如租赁日期、车型等。 4....

    Java Swing 点名系统

    例如,在点名系统中,可能有“文件”、“编辑”、“帮助”等菜单,这些菜单下又包含“打开”、“保存”、“退出”等子菜单,通过JMenuBar,用户可以通过菜单栏快速访问这些功能。 JFileChooser则是Swing提供的一个...

    java的swing的员工管理系统.rar

    Java的Swing库是Java标准版(Java SE)的一部分,用于构建桌面应用程序的GUI(图形用户界面)。在“java的swing的员工管理系统.rar”这个项目中,开发者利用Swing组件创建了一个简单的员工管理系统,该系统具备了...

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

    主要目标是创建一个用户友好的中国象棋平台,允许玩家开始新游戏、悔棋、打开已保存的棋局、保存当前棋局以及退出程序。这个项目旨在强化学生的Java编程能力,尤其是Swing库的使用,以及对象导向设计(OOP)概念的...

    课程设计-基于Java swing带GUI界面的房管理系统(源码+数据库).zip

    例如,当用户在界面上提交房源信息时,系统会将数据封装成PreparedStatement对象,然后执行相应的SQL插入语句。 此外,考虑到用户体验,该系统可能还包含了错误处理和验证机制,以确保输入数据的有效性。比如,检查...

    java(swing)计算器

    Java Swing 计算器是一个基于Java编程语言,利用Swing库构建的图形用户界面(GUI)应用程序。Swing是Java Foundation Classes(JFC)的一部分,提供了丰富的组件集,用于创建桌面应用。在这个“我的计算器”项目中,...

    用Swing写的一个RPG游戏

    3. JButton:用于创建游戏中的各种按钮,如“开始游戏”、“保存进度”、“退出游戏”等。按钮的点击事件通常会触发相应的游戏逻辑。 4. JLabel:用于显示文本和图像,如游戏标题、角色状态、地图标记等。 5. ...

    基于Java SE 内容写的简单的学生成绩管理系统,用文件存储数据,swing写的界面.zip

    这是一个基于Java SE开发的简单学生成绩管理系统,其主要特点是使用了Swing库来构建用户界面,并通过文件系统存储学生分数数据。以下是对这个项目的关键知识点的详细解释: 1. **Java SE**: Java Standard Edition...

    JAVA swing实现简单的学生管理系统.zip

    2. **JTable**:在管理学生信息时,JTable是不可或缺的组件。它可以显示二维数据,并支持排序、选择和编辑。开发者可以通过自定义TableModel来加载和处理学生数据,比如姓名、学号、成绩等字段。 3. **JButton**:...

    使用Java语言的Swing组件做的资产管理系统

    6. **菜单与菜单项**: JMenuBar和JMenuItem可以创建菜单栏,提供更复杂的用户操作入口,如“文件”、“编辑”、“帮助”等菜单,进一步包含“保存”、“退出”等子菜单项。 7. **布局管理**: Swing提供了多种布局...

    swing窗口旋转关闭

    Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分。在Swing中,你可以创建丰富的、高度交互的桌面应用。在Swing窗口旋转关闭这一主题中,我们将深入探讨如何利用...

    基于Swing的图片浏览器源运行例子

    此外,案例可能会包含一个`FileMenu`类,实现文件操作的菜单栏,如打开、保存、退出等。`JMenuItem`和`JMenuBar`用于构建菜单,`ActionListener`监听用户的点击事件,执行相应的操作。例如,当用户选择“打开”时,...

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

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

    基于Swing应用程序设计:一个简易的文本编辑框

    Swing是Java提供的一个用于构建图形用户界面(GUI)的工具包,它包含了各种组件,如按钮、菜单、文本框等,方便开发者创建桌面应用程序。 描述: "一个简易的文本编辑框super("记事本");JMenuBar mBar=new JMenuBar...

    java 记事本 图形化界面

    12. **状态更新**: 当用户执行某些操作(如保存或统计字符)时,可能需要更新界面,比如显示提示信息或更新统计结果。 通过这个项目,开发者不仅可以熟悉Java GUI编程,还能提升文件操作和事件处理的能力。实践中...

Global site tag (gtag.js) - Google Analytics