首页 > 学院 > 开发设计 > 正文

一个封装了Java改变LookAndFeel的JAVA菜单,可直接在可视化编辑拖拉(原创)

2019-11-18 11:34:54
字体:
来源:转载
供稿:网友

package com.qiu.demo;

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

/**
 * 一个封装了LookAndFeel子菜单 可用于改变组件的LookAndFeel 这些LookAndFeel是JRE自带的 LookAndFeel
 * 这些组件必须与一个父组件的相 关联,才可更新LookAndFeel
 *
 * @author QIU_BaiChao
 */
public class JLookAndFeelMenu extends JMenu {
 /**
  * 默认的菜单名
  */
 PRivate static final String defaultMenuName = "LookAndFeel";

 /**
  * 得到系统的安装的所有LookAndFeel
  */
 UIManager.LookAndFeelInfo[] info = UIManager.getInstalledLookAndFeels();

 /**
  * 按钮组,将一组LookAndFeel的单选按钮放在里面
  */
 ButtonGroup buttonGroup = new ButtonGroup();

 /**
  * 父组件,更新LookAndFeel只能更新
  * 在同一个父组件的LookAndFeel
  */
 Component parent;

 /**
  * 构造函数
  *
  * @param menuName
  *            菜单名
  * @param parrent
  *            父组件,将在同一个父组
  *            件容器的所有Component更新LookAndFeel
  */
 public JLookAndFeelMenu(String menuName, final Component parent) {
  // 生成各个可以选择LookAndFeel的单选按钮子菜单
  // generateLookAndFeelSubMenu(parent);
  setParentComponent(parent);
  // 设置菜单名
  this.setText(menuName);
 }

 /**
  * 构造函数 使用默认的菜单名:LookAndFeel
  *
  * @param parent
  *            父组件,将在同一个父组件容器的
  *            所有Component更新LookAndFeel
  */
 public JLookAndFeelMenu(Component parent) {
  this(defaultMenuName, parent);
 }

 /**
  * 默认构造函数 使用默认的菜单名,
  * 还需设置父组件方法
  * 调用setParentComponent(Component parent)方法
  */
 public JLookAndFeelMenu() {
  super(defaultMenuName);
 }

 /**
  * 生成LookAndFeel的单选子菜单
  *
  * @param parent
  */
 private void generateLookAndFeelSubMenu(final Component parent) {
  for (int i = 0; i < info.length; i++) {
   JRadioButtonMenuItem item = new JRadioButtonMenuItem(info[i]
     .getName(), i == 0);
   final String className = info[i].getClassName();
   // 增加事件处理
   item.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent evn) {
     try {
      UIManager.setLookAndFeel(className);
     } catch (Exception e) {
      e.printStackTrace();
     }
     // 更新组件的LookAndFeel
     SwingUtilities.updateComponentTreeUI(parent);
    }
   });
   buttonGroup.add(item);
   add(item);
  }
 }



发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表