PreferencePage配合PreferenceStore确实是一种解决选项配置问题的极佳办法。
但是PreferenceStore是有很多缺陷的,不晓得广大Java同行是怎么应用这玩意的。但是我的用法很特别,一个PreferencePage的实例中关联了两个PreferenceStore。这时,问题来了,Override的performApply()和performOk()两个函数,或者performOk()一个函数内必须同时有关于这两个PreferenceStore的save()方法,否则,Apply按钮就成了个摆设,这是相当的蛋疼的.....因为总页面的OK按钮不用Override的.....@@
另外,最讨厌的一点来自PreferenceStore本身,用了好长一段时间以后发现,它自带的setDefault(String,String)函数并没有想象中的好用,因为在PreferenceStore关联的配置文件中,如果你get一个不存在的key,而正好default值域里有这个key,那么它会返回这个default key value,这是很正常的,但是最关键的是,这种方式反过来也成立,也就是说,如果你的*.properties文件中没有这个key,但是你的default值域里有这个key,但是你想通过PreferenceStore.save()存入一个这个key,且value等于default里面这个key的value,那么你惨了,因为这个key根本存不进去,如果你的value不等于default里面这个key的value,反倒是可行的。经过反复实验,我终于屈服了,放弃使用setDefault,将default值都存入一个自定义的default ArrayList,不晓得大家有什么更好的办法没?