SWT FontFieldEditor使用

      通过使用swt的首选项里的Preferencestore和java.util里的Property类可以对程序的配置信息进行文件存取。我在程序中两种方式都采用了,但在我的首选项的一个页面里,我想要对用户设置的程序字体进行保存,发现在FieldEditorPreferencePage里使用FontFieldEditor时,不知如何取得所设置字体的字体信息,查看了一下

觉得都没能直接拿到,后来索性直接用了doStore() ,配置文件里多了这么一行:
SYSTEM_FONT=1|\u5FAE\u8F6F\u96C5\u9ED1|9.0|0|WINDOWS|1|-12|0|0|0|400|0|0|0|-122|3|2|1|34|\u5FAE\u8F6F\u96C5\u9ED1;
终于是拿到了,但是怎么拿来用啊....
  FontData date = PreferenceConverter.getFontData(preferenceStore, IConstants.SYSTEM_FONT);
  Font newFont = new Font(display, date); 
这样就可以了。而且必须放在shell.layout()之前才能生效。
     关于Property类的读写网上很多现成的。基本就是下面这样:
 
import   java.io.BufferedInputStream;
import   java.io.FileInputStream;
import   java.io.FileOutputStream;
import   java.io.IOException;
import   java.io.InputStream;
import   java.io.OutputStream;
import   java.util.Enumeration;
import   java.util.Properties;

/**
 * The Class Configuration.
 */
public   class   Configuration {

       // 根据key读取value
       /**
       * Read value.
       *
       *   @param   filePath the file path
       *   @param   key the key
       *   @return   the string
       */
       public   static   String readValue(String filePath, String key) {
            Properties props =   new   Properties();
             try   {
                  InputStream in =   new   BufferedInputStream( new   FileInputStream(filePath));
                  props.load(in);
                  String value = props.getProperty(key);
                   return   value;
            }   catch   (Exception e) {
                  e.printStackTrace();
                   return   null ;
            }
      }

       // 读取properties的全部信息
       /**
       * Read properties.
       *
       *   @param   filePath the file path
       */
       public   static   void   readProperties(String filePath) {
            Properties props =   new   Properties();
             try   {
                  InputStream in =   new   BufferedInputStream( new   FileInputStream(filePath));
                  props.load(in);
                  Enumeration en = props.propertyNames();
                   while   (en.hasMoreElements()) {
                        String key = (String) en.nextElement();
                        String Property = props.getProperty(key);
                        System. err .println(key + ":" + Property);
                  }
            }   catch   (Exception e) {
                  e.printStackTrace();
            }
      }

       // 写入properties信息
       /**
       * Write properties.
       *
       *   @param   filePath the file path
       *   @param   parameterName the parameter name
       *   @param   parameterValue the parameter value
       */
       public   static   void   writeProperties(String filePath, String parameterName, String parameterValue) {
            Properties prop =   new   Properties();
             try   {
                  InputStream fis =   new   FileInputStream(filePath);
                   // 从输入流中读取属性列表(键和元素对)
                  prop.load(fis);
                   // 调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。
                   // 强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
                  OutputStream fos =   new   FileOutputStream(filePath);
                  prop.setProperty(parameterName, parameterValue);
                   // 以适合使用 load 方法加载到 Properties 表中的格式,
                   // 将此 Properties 表中的属性列表(键和元素对)写入输出流
                  prop.store(fos,   "Update '"   + parameterName +   "' value" );
            }   catch   (IOException e) {
                  System. err .println( "Visit "   + filePath +   " for updating "   + parameterName +   " value error" );
            }
      }

}

转载于:https://www.cnblogs.com/vucko/archive/2011/12/08/2280924.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值