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);
	}
	

 

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

在界面渲染的最后面
swing 退出时保存界面信息_第1张图片
 

该方法的功能:

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

 

 

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界面时调用
swing 退出时保存界面信息_第2张图片

swing 退出时保存界面信息_第3张图片
  

 

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构建

项目源代码见附件

 

你可能感兴趣的:(读取配置文件,保存配置文件,readConfig,saveConfig)