swing 退出时保存界面信息

本文介绍了一个使用Java Swing的应用程序如何通过读取和保存配置文件来初始化界面和保存用户设置的方法。具体包括读取配置文件初始化表单元素、保存界面信息到配置文件的过程以及涉及的关键变量声明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

项目源代码见附件

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值