异常信息如下:
UIDefaults.getUI() failed: no ComponentUI class for: senvid.webTop.client.gui3.senvidUIPrimitives.SVStyleMenu[,0,0,0x0,invalid,alignmentX=null,alignmentY=null,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=null,paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=<HTML><BODY ></BODY></HTML>]java.lang.Error at javax.swing.UIDefaults.getUIError(Unknown Source) at javax.swing.UIDefaults.getUI(Unknown Source) at javax.swing.UIManager.getUI(Unknown Source) at javax.swing.JMenu.updateUI(Unknown Source) at javax.swing.JMenuItem.init(Unknown Source) at javax.swing.JMenuItem.<init>(Unknown Source) at javax.swing.JMenuItem.<init>(Unknown Source) at javax.swing.JMenu.<init>(Unknown Source) at javax.swing.JMenu.<init>(Unknown Source) at senvid.webTop.client.gui3.senvidUIPrimitives.SVStyleMenu.<init>(SVStyleMenu.java:67) at senvid.webTop.device.video.VideoComponent.addPopupMenu(VideoComponent.java:100) at senvid.webTop.device.video.VideoComponent.<init>(VideoComponent.java:62) at senvid.webTop.device.video.VideoClient.<init>(VideoClient.java:62) at senvid.webTop.client.apps.applet.MioNetApplet.openVideoDevice(MioNetApplet.java:569) at senvid.webTop.client.apps.applet.MioNetApplet$DeviceOpener.run(MioNetApplet.java:301) at edu.emory.mathcs.backport.java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442) at edu.emory.mathcs.backport.java.util.concurrent.FutureTask.run(FutureTask.java:178) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1061) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:575) at java.lang.Thread.run(Unknown Source)请高手指点,马上给分

解决方案 »

  1.   

    你 查看一下浏览器使用的jre是否安装或者版本是否合适。
      

  2.   

    thanks,可能就是这些原因,我在application中运行是正常的,但是换了jre1.6和jre1.4在Applet中运行还是有问题
      

  3.   

    no ComponentUI class for: senvid.webTop.client.gui3.senvidUIPrimitives.SVStyleMenuComponenUI中只有 
              if(uiClass==null)   
              {   
                      getUIError("no   componentUI   class   for:"+target);   
              }  也就是在反射时找不到你的组件的UI,想知道你定义的组件都做了些什么?
      

  4.   

    郁闷,我加上这句话也报类似的错误JMenu jm=new JMenu();
      

  5.   

    郁闷,我加上这句话也报类似的错误JMenu jm=new JMenu();
      

  6.   

    public class SVStyleMenu extends JMenu implements PopupMenuListener
    {
    ...}
      

  7.   

    JMenu jm=new JMenu(); 
    JMenu构造函数的参数不能为空吧
      

  8.   

    这个异常只发生在运行web applet时,运行application时没有上述问题,是不是有哪些参数配置不对
      

  9.   

    你web对应的JRE在什么位置,去查查rt.jar还在不?
      

  10.   

    你是不是在定义SVStyleMenu或者使用Menu的时候调用了Look&Feel设置语句? 如果有的话,把Look&Feel设置去掉看看是否正常。
      

  11.   

    看看里面的UI还在不? 或者你自己调用了 UIManager.setLookAndFeel了?com\sun\java\swing\plaf\motif\
    com\sun\java\swing\plaf\windows\javax\swing\plaf\metal\看看你用的什么观感,看异常是PopupMenuUI有问题
      

  12.   

    有这两个
    MotifMenuUI,WindowsMenuUI
    没有
    MetalMenuUI
      

  13.   

    public class SVStyleMenu extends JMenu implements PopupMenuListener
    {
      private boolean ignoreUserInput;
      private boolean mouseInside;
      private static final String uiClassID = "SVStyleBasicMenuUI";  private void setHilightEffect(boolean hilight)
      {
        if (hilight)
        {
          setOpaque(true);      setForeground(Color.WHITE);
          setBackground(SVStyle.getColor(SVStyle.COLOR_LIST_SELECTION_HILIGHT));
        }
        else
        {
          //setOpaque(false);
          setBackground(Color.WHITE);
          setForeground(SVStyle.getColor(SVStyle.COLOR_35_MENU_TEXT));//Color.BLACK);
        }
      }
      public void menuSelectionChanged(boolean isIncluded)
      {
        if (!isIncluded)
          if (mouseInside)
            setHilightEffect(true);
          else
            setHilightEffect(false);    super.menuSelectionChanged(isIncluded);    //To change body of overridden methods use File | Settings | File Templates.
      }      public void setPopupMenuVisible(boolean b)
      {
        super.setPopupMenuVisible(b);
      }
      public SVStyleMenu(SVStringID stringID, int fontID, JComponent parent)
      {//line 67 运行到这里开始报错
        mouseInside = false;
        ignoreUserInput = false;
        enableEvents(AWTEvent.WINDOW_EVENT_MASK);    getPopupMenu().addPopupMenuListener(this);    setText(SVStringTable.getString(stringID).getString());
        setFont(SVStyle.getFont(fontID));    if (parent != null)
          parent.add(this);
      }
      public SVStyleMenu(SVStringID stringID, int fontID, int iconID, JComponent parent)
      {
        mouseInside = false;
        ignoreUserInput = false;
        enableEvents(AWTEvent.WINDOW_EVENT_MASK);    getPopupMenu().addPopupMenuListener(this);    setText(SVStringTable.getString(stringID).getString());
        setFont(SVStyle.getFont(fontID));
        setIcon(ImageLoader.getImageIcon(iconID));    if (parent != null)
          parent.add(this);
      }
      protected boolean processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed)
      {
        if (ignoreUserInput)
          return true;
        else
          return super.processKeyBinding(ks, e, condition, pressed);
      }
      protected void processMouseEvent(MouseEvent e)
      {
        if (e.getID() == MouseEvent.MOUSE_ENTERED)
        {
          setHilightEffect(true);
          mouseInside = true;
        }
        else if (e.getID() == MouseEvent.MOUSE_EXITED)
        {
          setOpaque(false);      mouseInside = false;
         if (!isPopupMenuVisible())
            setForeground(SVStyle.getColor(SVStyle.COLOR_35_MENU_TEXT));//Color.BLACK);
        }    if (ignoreUserInput)
        {
          return;
        }
        else
        {
          //synchronized(TheApp.theAppSingleton)
          {
            super.processMouseEvent(e);
          }
        }
      }
      public boolean isIgnoreUserInput()
      {
        return ignoreUserInput;
      }
      public void setIgnoreUserInput(boolean ignoreUserInputIn)
      {
        ignoreUserInput = ignoreUserInputIn;
      }
      public void setText(String text)
      {
        String title = text;
        if ((text != null) && (text.length() > 6) && (text.substring(0,6).equals(MioNetConstants.TAG_HTML_OPEN)))
          title = SVStyle.internationalizeText(text, false, false);
        else if (text == null)
          title = null;
        else
          title = SVStyle.internationalizeText(text, true, false);
        /*  if(title != null){
               String fontAndStyleTagOpen  = "<FONT style=\"";
              String fontAndStyleTagClose = "</FONT>";
              int iStart = title.indexOf("BODY >");
              if(iStart>-1){                                                                
                    String beg = title.substring(0, iStart+6);
                    beg = beg+fontAndStyleTagOpen+"color: #"+SVStyle.getColorAsHexString(SVStyle.COLOR_35_MENU_TEXT)+";";
                    String newTitle = beg + "\">" + title.substring(iStart+6);
                    title = newTitle;
              }          title += fontAndStyleTagClose;     }*/
      //    System.out.println(title);
          super.setText(title);
      }
      public void setToolTipText(String text)
      {
        if ((text != null) && (text.length() > 6) && (text.substring(0,6).equals(MioNetConstants.TAG_HTML_OPEN)))
          super.setToolTipText(SVStyle.internationalizeText(text, false, false));
        else if (text == null)
          super.setToolTipText(null);
        else
          super.setToolTipText(SVStyle.internationalizeText(text, true, false));
      }
      public void popupMenuCanceled(PopupMenuEvent e)
      {
        setForeground(SVStyle.getColor(SVStyle.COLOR_LIST_SELECTION_HILIGHT));
      }
      public void popupMenuWillBecomeInvisible(PopupMenuEvent e)
      {
        setForeground(SVStyle.getColor(SVStyle.COLOR_LIST_SELECTION_HILIGHT));
      }
      public void popupMenuWillBecomeVisible(PopupMenuEvent e)
      {
        setHilightEffect(true);
      }
    }
      

  14.   

    系统默认为 Metal观感,没有当然就不对了。javax.swing.plaf.metal.MetalLookAndFeel你试着在main方法的最开始添加:
    UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
      

  15.   

    有MetalLookAndFeel
    很奇怪
    JMenuItem jm=new  JMenuItem("test");//没有错误JMenu jm=new  JMenu("test");//出错,信息如下
    UIDefaults.getUI() failed: no ComponentUI class for: javax.swing.JMenu[,0,0,0x0,invalid,alignmentX=null,alignmentY=null,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=null,paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=]java.lang.Error at javax.swing.UIDefaults.getUIError(Unknown Source) at javax.swing.UIDefaults.getUI(Unknown Source) at javax.swing.UIManager.getUI(Unknown Source) at javax.swing.JMenu.updateUI(Unknown Source) at javax.swing.JMenuItem.init(Unknown Source) at javax.swing.JMenuItem.<init>(Unknown Source) at javax.swing.JMenuItem.<init>(Unknown Source) at javax.swing.JMenu.<init>(Unknown Source) at javax.swing.JMenu.<init>(Unknown Source) at senvid.webTop.device.video.VideoComponent.addPopupMenu(VideoComponent.java:99) at senvid.webTop.device.video.VideoComponent.<init>(VideoComponent.java:63) at senvid.webTop.device.video.VideoClient.<init>(VideoClient.java:62) at senvid.webTop.client.apps.applet.MioNetApplet.openVideoDevice(MioNetApplet.java:570) at senvid.webTop.client.apps.applet.MioNetApplet$DeviceOpener.run(MioNetApplet.java:302) at edu.emory.mathcs.backport.java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442) at edu.emory.mathcs.backport.java.util.concurrent.FutureTask.run(FutureTask.java:178) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1061) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:575) at java.lang.Thread.run(Unknown Source)
      

  16.   

    JMenu jm1=new  JMenu("test");//出错,信息同上
      

  17.   

    晕死,你应该哪个地方设置了吧
    private static final String uiClassID = "SVStyleBasicMenuUI";
      

  18.   

    public String getUIClassID() {
       return uiClassID;  SVStyleBasicMenuUI
    }把这个去掉了吧
      

  19.   

    你是说 没有下面这一行?private static final String uiClassID = "SVStyleBasicMenuUI";
      

  20.   

    你的意思是加上这行代码
    UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
    指定组件的外观吗?我试试看一下
      

  21.   

    指定外观可以使用吗? 你不是说没有 MetalMenuUI?
      

  22.   

    没有MetalMenuUI这个类,
    加上这句话还是不行
    UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); JMenuItem jm=new  JMenuItem("test");//没有错误 JMenu jm1=new  JMenu("test");//出错 
    这两个类有什么差别呢?为什么会报错啊
      

  23.   

    没有MetalMenuUI这个类,
    加上这句话还是不行
    UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); JMenuItem jm=new  JMenuItem("test");//没有错误 JMenu jm1=new  JMenu("test");//出错 
    这两个类有什么差别呢?为什么会报错啊
      

  24.   

    有自定义的UI
    SVStyleBasicMenuUI.java
    不知道怎么关联public class SVStyleBasicMenuUI extends BasicMenuUI {
         public static ComponentUI createUI(JComponent x) {
        return new SVStyleBasicMenuUI();
        }
         protected void installDefaults() {
             super.installDefaults();
            selectionBackground = SVStyle.getColor(SVStyle.COLOR_35_MENU_SELECTION_BACKGROUND);
         }
        protected void paintBackground(Graphics g, JMenuItem menuItem, Color bgColor) {
         ButtonModel model = menuItem.getModel();
         Color oldColor = g.getColor();
            int menuWidth = menuItem.getWidth();
            int menuHeight = menuItem.getHeight();
            Graphics2D g2D = (Graphics2D)g;
            if(menuItem.isOpaque()) {
                if (model.isArmed()|| (menuItem instanceof JMenu && model.isSelected())) {
                    g.setColor(selectionBackground);
                    g.fillRect(0,0, menuWidth, menuHeight);
                    menuItem.setForeground(Color.white);
                } else {
                    if(isMouseOver && model.isEnabled()){
                        g.setColor(selectionBackground);
                        g.fillRect(0,0, menuWidth, menuHeight);
                        menuItem.setForeground(Color.white);
                    }
                    else{
                        GradientPaint gp1 = new GradientPaint(new Point(0,0), SVStyle.getColor(SVStyle.COLOR_35_MENUBAR_BACKGROUND_TOP),
                                new Point(0,menuHeight),SVStyle.getColor(SVStyle.COLOR_35_MENUBAR_BACKGROUND_BOTTOM));
                        g2D.setPaint(gp1);
                        g2D.fill(new Rectangle(0,0, menuWidth, menuHeight));
                         menuItem.setForeground(SVStyle.getColor(SVStyle.COLOR_35_MENU_TEXT));
                    }
                }
                g.setColor(oldColor);
            }
        }
        
        protected MouseInputListener createMouseInputListener(JComponent c) {
        return new SVMouseInputHandler();
        }
        protected class SVMouseInputHandler extends MouseInputHandler{
            public void mouseEntered(MouseEvent e) {
            super.mouseEntered(e);
                isMouseOver = true;
            }
            public void mouseExited(MouseEvent e) {
              isMouseOver = false;
            }
        }
        boolean isMouseOver = false;
    }
      

  25.   

    非常感谢Arthur(亚瑟王)及其他热情回复的网友,问题已经解决在SVStyleMenu类中追加以下代码
      private SVStyleBasicMenuUI menuItemUI;  public void updateUI()
      {
        super.updateUI();
        menuItemUI = new SVStyleBasicMenuUI();
        setUI(menuItemUI);
      }