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构建
项目源代码见附件
?
原文:http://hw1287789687.iteye.com/blog/2217650