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");
            }
      }

}
posted @ 2011-12-08 16:12  vucko  阅读(187)  评论(0编辑  收藏  举报