swing 退出时保存界面信息

简介:

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

Java代码   收藏代码
  1. /*** 
  2.      * 读取配置文件 
  3.      * @throws IOException 
  4.      */  
  5.     private void readConfig() throws IOException{  
  6.         configFile=new File(configFilePath);  
  7.         if(configFile.exists()){  
  8.             InputStream inStream=new FileInputStream(configFile);  
  9.             props.load(inStream);  
  10.             inStream.close();//及时关闭资源  
  11.         }  
  12.         String shareUrl=getPropValue(PROP_KEY_SHARE_URL);  
  13.         String picUrls=getPropValue(PROP_KEY_PIC_URLS);  
  14. //      String qrCodeText=getPropValue(PROP_KEY_QR_CODE_TEXT);  
  15.         //要加密或解密的原文件  
  16. //      String encryptedSrcfile=getPropValue(PROP_KEY_ENCRYPTED_SRCFILE);  
  17.         String qrComboboxStr=getPropValue(PROP_KEY_QR_CODE_COMBOBOX);  
  18.         if(!ValueWidget.isNullOrEmpty(shareUrl)){  
  19.             urlTextField.setText(shareUrl);  
  20.             textField_1.setText(shareUrl);  
  21.         }  
  22.         if(!ValueWidget.isNullOrEmpty(picUrls)){  
  23.             ComponentUtil.fillComboBox(picPathComboBox, picUrls);  
  24.               
  25.         }  
  26.       
  27.         setSwingInput(sharedPicTextField, PROP_KEY_PIC_URL);  
  28.           
  29.         setSwingInput(redTF, PROP_KEY_COLOR_RED);  
  30.         setSwingInput(greenTF, PROP_KEY_COLOR_GREEN);  
  31.         setSwingInput(blueTF, PROP_KEY_COLOR_BLUE);  
  32.           
  33.         setSwingInput(queryStringPanel.getQueryStringTField(), PROP_KEY_QUERY_STRING2JSON);  
  34.         setSwingInput(queryStringPanel.getToUrlEncodedTField_1(), PROP_KEY_HAVE_URL_DECODED);  
  35.         setSwingInput(queryStringPanel.getURLEncodedTF(), PROP_KEY_HAVE_URL_ENCODED);  
  36.           
  37.         /*** 
  38.          * 生成二维码中的下拉框 
  39.          */  
  40.         ComponentUtil.fillComboBox(qrCodePanel.getQrComboBox(), qrComboboxStr);  
  41.       
  42.         setSwingInput(qrCodePanel.getInputQRTextArea(), PROP_KEY_QR_CODE_TEXT);  
  43.       
  44.         setSwingInput(customEncryptPanel.getSourceTextField(), PROP_KEY_ENCRYPTED_SRCFILE);  
  45.     }  
  46.       

 

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

在界面渲染的最后面

 

该方法的功能:

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

 

 

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

Java代码   收藏代码
  1. /*** 
  2.      * 保存到配置文件中 
  3.      * @throws IOException  
  4.      */  
  5.     public void saveConfig() throws IOException{  
  6.         if(!configFile.exists()){  
  7.             try {  
  8.                 SystemHWUtil.createEmptyFile(configFile);  
  9.             } catch (IOException e) {  
  10.                 e.printStackTrace();  
  11.                 GUIUtil23.errorDialog(e);  
  12.             }  
  13.         }  
  14.         CMDUtil.show(configFilePath);//因为隐藏文件是只读的  
  15.         if(ValueWidget.isNullOrEmpty(props)){  
  16.             props= new Properties();  
  17.         }  
  18.         //分享的url  
  19.         String url2=urlTextField.getText();  
  20.         if(!ValueWidget.isNullOrEmpty(url2)){  
  21.             props.setProperty(PROP_KEY_SHARE_URL, url2);  
  22.         }  
  23.         String picUrl2=sharedPicTextField.getText();  
  24.         if(!ValueWidget.isNullOrEmpty(picUrl2)){  
  25.             props.setProperty(PROP_KEY_PIC_URL, picUrl2);  
  26.         }  
  27.           
  28.         String redColor2=redTF.getText();  
  29.         if(!ValueWidget.isNullOrEmpty(redColor2)){  
  30.             props.setProperty(PROP_KEY_COLOR_RED, redColor2);  
  31.         }  
  32.         String greenColor2=greenTF.getText();  
  33.         if(!ValueWidget.isNullOrEmpty(greenColor2)){  
  34.             props.setProperty(PROP_KEY_COLOR_GREEN, greenColor2);  
  35.         }  
  36.         String blueColor2=blueTF.getText();  
  37.         if(!ValueWidget.isNullOrEmpty(blueColor2)){  
  38.             props.setProperty(PROP_KEY_COLOR_BLUE, blueColor2);  
  39.         }  
  40.           
  41.         String queryString2=queryStringPanel.getQueryStringTField().getText();  
  42.         if(!ValueWidget.isNullOrEmpty(queryString2)){  
  43.             props.setProperty(PROP_KEY_QUERY_STRING2JSON, queryString2);  
  44.         }  
  45.           
  46.         String toUrlEncoded2=queryStringPanel.getToUrlEncodedTField_1().getText();  
  47.         if(!ValueWidget.isNullOrEmpty(toUrlEncoded2)){  
  48.             props.setProperty(PROP_KEY_HAVE_URL_DECODED, toUrlEncoded2);  
  49.         }  
  50.           
  51.         String URLEncoded2=queryStringPanel.getURLEncodedTF().getText();  
  52.         if(!ValueWidget.isNullOrEmpty(URLEncoded2)){  
  53.             props.setProperty(PROP_KEY_HAVE_URL_ENCODED, URLEncoded2);  
  54.         }  
  55.           
  56.         setCombox(PROP_KEY_PIC_URLS, sharedPicTextField, picPathComboBox);  
  57.   
  58.         setCombox(PROP_KEY_QR_CODE_COMBOBOX, qrCodePanel.getInputQRTextArea(), qrCodePanel.getQrComboBox());  
  59.           
  60.         String inputQRTextAreaText=qrCodePanel.getInputQRTextArea().getText();  
  61.         if(!ValueWidget.isNullOrEmpty(inputQRTextAreaText)){  
  62.             props.setProperty(PROP_KEY_QR_CODE_TEXT, inputQRTextAreaText);  
  63.         }  
  64.           
  65.         String sourceTextFieldText=customEncryptPanel.getSourceTextField().getText();  
  66.         if(!ValueWidget.isNullOrEmpty(sourceTextFieldText)){  
  67.             props.setProperty(PROP_KEY_ENCRYPTED_SRCFILE, sourceTextFieldText);  
  68.         }  
  69.         OutputStream out=new FileOutputStream(configFile);  
  70.         props.store(out, TimeHWUtil.formatDateTimeZH(null));  
  71.         out.close();//及时关闭资源  
  72.         CMDUtil.hide(configFilePath);  
  73.     }  

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

在关闭swing界面时调用



  

 

3,相关变量的声明

Java代码   收藏代码
  1. protected Properties  props= new Properties();  
  2.     /*** 
  3.      * 配置文件 
  4.      */  
  5.     protected File configFile;  
  6. public static final String configFilePath=System.getProperty("user.home")+File.separator+ ".share.properties";  
  7. public static final String PROP_KEY_SHARE_URL="share_url";  
  8.     /*** 
  9.      * 分享的图片 
  10.      */  
  11.     public static final String PROP_KEY_PIC_URLS="pic_urls";  
  12.     /*** 
  13.      * 用于保存"分享的图片"文本框中的内容 
  14.      */  
  15.     public static final String PROP_KEY_PIC_URL="pic_url";  
  16.     /*** 
  17.      * 红色 
  18.      */  
  19.     public static final String PROP_KEY_COLOR_RED="color_red";  
  20.     /*** 
  21.      * 绿色 
  22.      */  
  23.     public static final String PROP_KEY_COLOR_GREEN ="color_green";  
  24.     /*** 
  25.      * 蓝色 
  26.      */  
  27.     public static final String PROP_KEY_COLOR_BLUE="color_blue";  
  28.     /*** 
  29.      * 二维码文本 
  30.      */  
  31.     public static final String PROP_KEY_QR_CODE_TEXT="qr_code_text";  
  32.     /*** 
  33.      * 要加密或解密的原文件 
  34.      */  
  35.     public static final String PROP_KEY_ENCRYPTED_SRCFILE="encrypted_srcfile";  
  36.     /*** 
  37.      * 生成二维码输入框下面的下拉框 
  38.      */  
  39.     public static final String PROP_KEY_QR_CODE_COMBOBOX="qr_code_combobox";  
  40.   
  41.     /*** 
  42.      * 请求参数 
  43.      */  
  44.     public static final String PROP_KEY_QUERY_STRING2JSON="json_querystring";  
  45.     /*** 
  46.      * 已经URL编码的内容 
  47.      */  
  48.     public static final String PROP_KEY_HAVE_URL_ENCODED="url_encoded";  
  49.     /*** 
  50.      * 需URL编码的内容 
  51.      */  
  52.     public static final String PROP_KEY_HAVE_URL_DECODED="url_decoded";  
  53.       

 

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

Java代码   收藏代码
  1. InputStream inStream=new FileInputStream(configFile);  
  2.             props.load(inStream);  
  3.             inStream.close();//及时关闭资源  

 

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

Java代码   收藏代码
  1. OutputStream out=new FileOutputStream(configFile);  
  2.         props.store(out, TimeHWUtil.formatDateTimeZH(null));  
  3.         out.close();//及时关闭资源  
相关文章
|
小程序
小程序常见简单界面功能属性记录
小程序常见简单界面功能属性记录
158 0
|
6月前
|
C#
[C#] 如何在子线程中显示编辑控件内容
[C#] 如何在子线程中显示编辑控件内容
51 0
|
数据库
学生信息管理系统之【修改信息窗口】
学生信息管理系统之【修改信息窗口】
102 0
|
IDE 编译器 开发工具
问题:窗体在运行时显示,在解决方案管理器中不显示
小引: 虽然我知道实现《机房收费管理系统》会遇见各种问题,但是碰到这么狗血的问题,我真是大姑娘上花轿——头一回!
|
Scala 开发者
CRM 项目-实现主菜单显示和退出 | 学习笔记
快速学习 CRM 项目-实现主菜单显示和退出
CRM 项目-实现主菜单显示和退出 | 学习笔记
PyQt5 技术篇-调用输入对话框(QInputDialog)获取用户输入内容。
PyQt5 技术篇-调用输入对话框(QInputDialog)获取用户输入内容。
921 0
PyQt5 技术篇-调用输入对话框(QInputDialog)获取用户输入内容。
|
存储
PyQt5 技巧篇-复选框绑定行内容,全选、清空、展示选中的内容功能实现演示,设置复选框选中,检查复选框选中状态
PyQt5 技巧篇-复选框绑定行内容,全选、清空、展示选中的内容功能实现演示,设置复选框选中,检查复选框选中状态
473 0
PyQt5 技巧篇-复选框绑定行内容,全选、清空、展示选中的内容功能实现演示,设置复选框选中,检查复选框选中状态