Ctrl+S保存配置文件

java swing程序,Ctrl+S 保存配置文件如何实现呢?

首先增加全局快捷键:

 /***
		 * 增加全局快捷键.<Br>
		 * Ctrl+S,保存参数到配置文件
		 */
		private void setGlobalShortCuts() {
			// Add global shortcuts
			Toolkit toolkit = Toolkit.getDefaultToolkit();
			// 注册应用程序全局键盘事件, 所有的键盘事件都会被此事件监听器处理.
			toolkit.addAWTEventListener(new java.awt.event.AWTEventListener() {
				public void eventDispatched(AWTEvent event) {
					if (event.getClass() == KeyEvent.class) {
						KeyEvent kE = ((KeyEvent) event);
						// 处理按键事件 Ctrl+S
						if (kE.getKeyCode() == KeyEvent.VK_S
								&& kE.isControlDown()
								&& kE.getID() == KeyEvent.KEY_PRESSED) {
//							System.out.println("save");
							saveConfig();
						} 
					}
				}
			}, java.awt.AWTEvent.KEY_EVENT_MASK);

		}

		/***
		 * 保存到配置文件中
		 */
		private void saveConfig(){
			File configFile=new File(configFilePath);
			if(!configFile.exists()){
				try {
					SystemHWUtil.createEmptyFile(configFile);
				} catch (IOException e) {
					e.printStackTrace();
					GUIUtil23.errorDialog(e);
				}
			}
			String content=String.format(SAVE_CONFIG_TEMP, ipTextField.getText(),portTextField.getText(),topicTextField.getText());
			CMDUtil.show(configFilePath);//因为隐藏文件是只读的
			FileUtils.writeToFile(configFilePath, content);
//			CMDUtil.executeCmd("attrib "+configFilePath+" +H");
			CMDUtil.hide(configFilePath);
		}

程序启动时读取配置文件

private void readConfig() throws IOException{
//		GenericReadPropsUtil propUtil=new GenericReadPropsUtil();
		Properties prop= GenericReadPropsUtil.getProperties(!isInjar, CONF_PATH);
		/***
		 * 从系统盘目录下读取配置文件
		 */
		Properties prop2= GenericReadPropsUtil.getProperties(false, configFilePath);
		String serverIp22=null;
		String port22=null;
		String topic22=null;
		if(!ValueWidget.isNullOrEmpty(prop2)){
		serverIp22=prop2.getProperty("ip");
		port22=prop2.getProperty("port");
		topic22=prop2.getProperty("topic");
		}
//		if(ValueWidget.isNullOrEmpty(prop)){
//			prop= GenericReadPropsUtil.getProperties(false, CONF_PATH);
//		}
		if(ValueWidget.isNullOrEmpty(prop)&&ValueWidget.isNullOrEmpty(prop2)){
			return;
		}
		String key2 = "selected_index";
		if(ValueWidget.isNullOrEmpty(prop)){
			selectedIndex=0;
		}else{
			selectedIndex=Integer.parseInt(prop.getProperty(key2));
		}

		String propValue=null;
		if(ValueWidget.isNullOrEmpty(serverIp22)){

		key2 = KEY_PROP_ACTIVEMQ_IP;
		propValue = prop.getProperty(key2);
		if (propValue != null ) {
			this.ipTextField.setText(propValue);
		}}else{
			this.ipTextField.setText(serverIp22);
		}
		if(ValueWidget.isNullOrEmpty(port22)){
		key2 = KEY_PROP_ACTIVEMQ_MQTT_PORT;
		propValue = prop.getProperty(key2);
		if (propValue != null ) {
			this.portTextField.setText(propValue);
		}
		}else{
			this.portTextField.setText(port22);
		}

		if(ValueWidget.isNullOrEmpty(topic22)){
		key2 = KEY_PROP_ACTIVEMQ_TOPIC;
		propValue = prop.getProperty(key2);
		if (propValue != null ) {
			this.topicTextField.setText(propValue);
		}
		}else{
			this.topicTextField.setText(topic22);
		}

		key2 = KEY_PROP_ACTIVEMQ_CLIENT_ID;
		if(ValueWidget.isNullOrEmpty(prop)){

		}else{
		propValue = prop.getProperty(key2);
		}
		if (propValue != null ) {
			this.clientIdTextField.setText(propValue);
		}

	}
	public static final String configFilePath="C:\\.mqtt_client.properties";

注意:隐藏文件是只读的,所以写入文件之前先执行CMDUtil.show(configFilePath)

程序运行状态:

项目使用maven 构建

源码见附件

时间: 2024-10-09 04:10:07

Ctrl+S保存配置文件的相关文章

xml基本操作和保存配置文件应用实例

引言:在实际项目中遇到一些关于xml操作的问题,被逼到无路可退的时候终于决定好好研究xml一番.本文首先介绍了xml的基本操作,后面写了一个经常用到的xml保存配置文件的实例. xml常用方法: 定义xml文档:XmlDocument xmlDoc = new XmlDocument(); 初始化xml文档:xmlDoc.Load("D:\\book.xml");//找到xml文件 创建根元素:XmlElement xmlElement = xmlDoc.CreateElement(&

让vim能CTRL+S保存

用vim正撸代码撸的飞起,突然Xshell就掉线了,真是太蛋疼了. 于是开始怀念起vs下撸代码时随时随地ctrl+s保存的快捷键,百度了一下,网上的vim实现ctrl+s保存的快捷键设置都有问题,自己捣鼓了半天才搞定,在这里记录一下. 首先要禁止 "CTRL-S:挂起终端, "CTRL-Q:恢复终端 "这些键盘映射, 在用户主目录下的.bashrc中加入stty -ixon    如下图: 然后修改vim中的按键映射,在 ~/.vimrc中加入 nmap <C-S>

用putty玩linux的时候由于以前用window 习惯写完东西按一下ctrl+s 保存

问题描述:用putty玩linux的时候由于以前用window 习惯写完东西按一下ctrl+s 保存,但是在putty一按下就不能再输入了.后来查找到:ctrl+s 是putty的一个命令大概是这样子:”Long long ago“ 某些旧的”哑终端“会在发送过来的数据太多,显示速度跟不上时发送一个Ctrl+s让对方等一下,然后再准备好继续显示时发送一个Ctrl+q.Putty“兼容”了这个特性.也有人说是Ctrl+s是锁定屏幕用的 .不管是怎样,当你不小心在Putty中按了Ctrl+s后再按一

WPF 分享一种设置程序保存配置文件的方法

最近需要做一个配置程序,主要给其他程序做相关配置的小工具. 配置项蛮多的,一般我们都是将各个配置项写到配置文件的节点中,比如App.config文件或者自定义的xml文件. 因为我用的是wpf,MVVM,所以其实界面上的所有数据我都存着ViewModel的实体属性中.比如我们新建一个Model,叫SettingModel,界面上不管做任何更改,其实数据都和SettingModel中一样. 我们将这个SettingModel的内存数据序列化到本地文件.等下次运行程序时,再去反序列化将Setting

IIS7保存配置文件及导入、导出、备份、还原

IIS6下想要保存配置,只需在图形界面下点右键保存即可,但windows 2008下的IIS7却没有这样的选项, IIS7的配置文件有好几个,在c:\windows\system32\inetsrv\config文件夹下,如果需要手动去备份,只要复制一份config这个目录既可以. 同时,iis7也可通过appcmd命令来管理备份,如:c:\windows\system32\inetsrv\AppCmd.exe LIST SITE /config /XML > iisappcmdexport.x

winform 读取保存配置文件

原文连接: public static string fileName = System.IO.Path.GetFileName(Application.ExecutablePath);        public static bool addSetting(string key, string value)        {            Configuration config = System.Configuration.ConfigurationManager.OpenExeC

C# 不重启程序修改并保存配置文件(appSettings节点)

private static void UpdateAppConfig(string newKey, string newValue) { bool isModified = false; foreach (string key in ConfigurationManager.AppSettings) { if (key == newKey) { isModified = true; } } Configuration config = ConfigurationManager.OpenExeC

eclipse 编写完JAVA的代码 ctrl+s保存一下,右下角就有building workspace一直在执行。。特别卡、卡、、

eclipse 默认是自动编译的.把project 下的build autimaticaly 勾去掉,译成手动编译,这样可以减少系统的负荷.  OK!问题解决!!

树莓派多个wifi设置方法

https://jingyan.baidu.com/article/ab69b2709b090a2ca7189f9b.html 转自百度经验 先用SSH连接树莓派   使打开interfaces配置文件 代码为: sudo nano /etc/network/interfaces   将(allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface defaul