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构建
项目源代码见附件