SWT FontFieldEditor使用

本文介绍如何利用SWT的Preferencestore和Java的Property类对程序配置信息进行文件存取,并以实现保存用户自定义字体为例,演示了获取和应用字体信息的方法。此外,还提供了使用Property类读写properties文件的代码示例。

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

      通过使用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、付费专栏及课程。

余额充值