从每个用户偏好获得理想的外观和感觉 : 偏好 « 开发相关 « Java 教程

En
Java 教程
1. 语言基础
2. 数据类型
3. 操作符
4. 流程控制
5. 类定义
6. 开发相关
7. 反射
8. 正则表达式
9. 集合
10. 线
11. 文件
12. 泛型
13. 本土化
14. Swing
15. Swing事件
16. 二维图形
17. SWT
18. SWT 二维图形
19. 网络
20. 数据库
21. Hibernate
22. JPA
23. JSP
24. JSTL
25. Servlet
26. Web服务SOA
27. EJB3
28. Spring
29. PDF
30. 电子邮件
31. 基于J2ME
32. J2EE应用
33. XML
34. 设计模式
35. 日志
36. 安全
37. Apache工具
38. 蚂蚁编译
39. JUnit单元测试
Java
Java 教程 » 开发相关 » 偏好 
6. 36. 24. 从每个用户偏好获得理想的外观和感觉
/*
 * Copyright (c) 2004 David Flanagan.  All rights reserved.
 * This code is from the book Java Examples in a Nutshell, 3nd Edition.
 * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.
 * You may study, use, and modify it for any non-commercial purpose,
 * including teaching and use in open-source projects.
 * You may distribute it non-commercially as long as you retain this notice.
 * For a commercial use license, or to purchase the book, 
 * please visit http://www.davidflanagan.com/javaexamples3.
 */

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.prefs.Preferences;

import javax.swing.ButtonGroup;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class LookAndFeelPrefs {
  public static final String PREF_NAME = "preferredLookAndFeelClassName";

  /**
   * Get the desired look and feel from a per-user preference. If the
   * preferences doesn't exist or is unavailable, use the default look and feel.
   * The preference is shared by all classes in the same package as prefsClass.
   */
  public static void setPreferredLookAndFeel(Class prefsClass) {
    Preferences prefs = Preferences.userNodeForPackage(prefsClass);
    String defaultLAF = UIManager.getSystemLookAndFeelClassName();
    String laf = prefs.get(PREF_NAME, defaultLAF);
    try {
      UIManager.setLookAndFeel(laf);
    catch (Exception e) { // ClassNotFound or InstantiationException
      // An exception here is probably caused by a bogus preference.
      // Ignore it silently; the user will make do with the default LAF.
    }
  }

  /**
   * Create a menu of radio buttons listing the available Look and Feels. When
   * the user selects one, change the component hierarchy under frame to the new
   * LAF, and store the new selection as the current preference for the package
   * containing class c.
   */
  public static JMenu createLookAndFeelMenu(final Class prefsClass, final ActionListener listener) {
    // Create the menu
    final JMenu plafmenu = new JMenu("Look and Feel");

    // Create an object used for radio button mutual exclusion
    ButtonGroup radiogroup = new ButtonGroup();

    // Look up the available look and feels
    UIManager.LookAndFeelInfo[] plafs = UIManager.getInstalledLookAndFeels();

    // Find out which one is currently used
    String currentLAFName = UIManager.getLookAndFeel().getClass().getName();

    // Loop through the plafs, and add a menu item for each one
    for (int i = 0; i < plafs.length; i++) {
      String plafName = plafs[i].getName();
      final String plafClassName = plafs[i].getClassName();

      // Create the menu item
      final JMenuItem item = plafmenu.add(new JRadioButtonMenuItem(plafName));
      item.setSelected(plafClassName.equals(currentLAFName));

      // Tell the menu item what to do when it is selected
      item.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent event) {
          // Set the new look and feel
          try {
            UIManager.setLookAndFeel(plafClassName);
          catch (UnsupportedLookAndFeelException e) {
            // Sometimes a Look-and-Feel is installed but not
            // supported, as in the Windows LaF on Linux platforms.
            JOptionPane.showMessageDialog(plafmenu, "The selected Look-and-Feel is "
                "not supported on this platform.""Unsupported Look And Feel",
                JOptionPane.ERROR_MESSAGE);
            item.setEnabled(false);
          catch (Exception e) { // ClassNotFound or Instantiation
            item.setEnabled(false)// shouldn't happen
          }

          // Make the selection persistent by storing it in prefs.
          Preferences p = Preferences.userNodeForPackage(prefsClass);
          p.put(PREF_NAME, plafClassName);

          // Invoke the supplied action listener so the calling
          // application can update its components to the new LAF
          // Reuse the event that was passed here.
          listener.actionPerformed(event);
        }
      });

      // Only allow one menu item to be selected at once
      radiogroup.add(item);
    }

    return plafmenu;
  }
}
6. 36. 偏好
6. 36. 1. 存键值到用户偏好
6. 36. 2. 从用户偏好获取childrenNames
6. 36. 3. 从用户偏好取得键值
6. 36. 4. 从用户偏好获取名称和父节点
6. 36. 5. 从用户偏好获取节点
6. 36. 6. 从用户偏好获得值
6. 36. 7. 在用户偏好使用和设置的Java类型
6. 36. 8. 获得使用偏好的最大尺寸
6. 36. 9. 获得偏好树
6. 36. 10. 删除偏好节点
6. 36. 11. 偏好XML文件
6. 36. 12. 输出偏好保存和加载
6. 36. 13. 偏好监听
6. 36. 14. 删除倾向节点
6. 36. 15. 确定是否存在偏好节点
6. 36. 16. 确定偏好是否包含特定关键词
6. 36. 17. 确定偏好是否包含特定值
6. 36. 18. 在Windows注册表读/写数据
6. 36. 19. 在使用偏好检索父节点和子节点
6. 36. 20. 输出偏好
6. 36. 21. 输出偏好子树
6. 36. 22. Listening for Changes to Preference Values in a Preference Node
6. 36. 23. 确定何时添加或删除
6. 36. 24. 从每个用户偏好获得理想的外观和感觉
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.