2011-05-15 124 views
1

我已经创建了一个GUI和我使用的seaglasslookandfeel和我的jar文件在我的构建路径,我得到一个异常的外观和感觉SEAGLASS的外观和感觉异常

import java.awt.EventQueue; 
import javax.swing.JFrame; 
import javax.swing.UIManager; 


public class Main { 

    private JFrame frame; 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        UIManager.setLookAndFeel("com.seaglasslookandfeel.SeaGlassLookAndFeel"); 
        Main window = new Main(); 
         window.frame.setLocationRelativeTo(null); 
         window.frame.pack(); 
        window.frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 


    public Main() { 
     initialize(); 
    } 

    private void initialize() { 
     frame = new JFrame(); 
     frame.setBounds(100, 100, 450, 300); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     Panel p=new Panel(); 
     frame.add(p); 

    } 

} 


Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError 
    at sun.reflect.GeneratedConstructorAccessor1.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at java.lang.Class.newInstance0(Unknown Source) 
    at java.lang.Class.newInstance(Unknown Source) 
    at com.seaglasslookandfeel.SeaGlassContext.getContext(SeaGlassContext.java:145) 
    at com.seaglasslookandfeel.ui.SeaGlassPanelUI.getContext(SeaGlassPanelUI.java:154) 
    at com.seaglasslookandfeel.ui.SeaGlassPanelUI.updateStyle(SeaGlassPanelUI.java:128) 
    at com.seaglasslookandfeel.ui.SeaGlassPanelUI.propertyChange(SeaGlassPanelUI.java:217) 
    at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) 
    at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) 
    at java.awt.Component.firePropertyChange(Unknown Source) 
    at java.awt.Component.setBackground(Unknown Source) 
    at javax.swing.JComponent.setBackground(Unknown Source) 
    at javax.swing.plaf.synth.SynthStyle.installDefaults(Unknown Source) 
    at com.seaglasslookandfeel.SeaGlassStyleWrapper.installDefaults(SeaGlassStyleWrapper.java:123) 
    at com.seaglasslookandfeel.SeaGlassStyleWrapper.installDefaults(SeaGlassStyleWrapper.java:113) 
    at com.seaglasslookandfeel.SeaGlassLookAndFeel.updateStyle(SeaGlassLookAndFeel.java:2286) 
    at com.seaglasslookandfeel.ui.SeaGlassPanelUI.updateStyle(SeaGlassPanelUI.java:130) 
    at com.seaglasslookandfeel.ui.SeaGlassPanelUI.propertyChange(SeaGlassPanelUI.java:217) 
    at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) 
    at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) 
    at java.awt.Component.firePropertyChange(Unknown Source) 
    at java.awt.Component.setBackground(Unknown Source) 
    at javax.swing.JComponent.setBackground(Unknown Source) 
    at javax.swing.plaf.synth.SynthStyle.installDefaults(Unknown Source) 
    at com.seaglasslookandfeel.SeaGlassStyleWrapper.installDefaults(SeaGlassStyleWrapper.java:123) 
    at com.seaglasslookandfeel.SeaGlassStyleWrapper.installDefaults(SeaGlassStyleWrapper.java:113) 
    at com.seaglasslookandfeel.SeaGlassLookAndFeel.updateStyle(SeaGlassLookAndFeel.java:2286) 
    at com.seaglasslookandfeel.ui.SeaGlassPanelUI.updateStyle(SeaGlassPanelUI.java:130) 
    at com.seaglasslookandfeel.ui.SeaGlassPanelUI.propertyChange(SeaGlassPanelUI.java:217) 
    at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) 
    at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) 
    at java.awt.Component.firePropertyChange(Unknown Source) 
    at java.awt.Component.setBackground(Unknown Source) 
    at javax.swing.JComponent.setBackground(Unknown Source) 
    at javax.swing.plaf.synth.SynthStyle.installDefaults(Unknown Source) 
    at com.seaglasslookandfeel.SeaGlassStyleWrapper.installDefaults(SeaGlassStyleWrapper.java:123) 
    at com.seaglasslookandfeel.SeaGlassStyleWrapper.installDefaults(SeaGlassStyleWrapper.java:113) 
    at com.seaglasslookandfeel.SeaGlassLookAndFeel.updateStyle(SeaGlassLookAndFeel.java:2286) 
    at com.seaglasslookandfeel.ui.SeaGlassPanelUI.updateStyle(SeaGlassPanelUI.java:130) 
    at com.seaglasslookandfeel.ui.SeaGlassPanelUI.propertyChange(SeaGlassPanelUI.java:217) 
    at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) 
    at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) 
    at java.awt.Component.firePropertyChange(Unknown Source) 
    at java.awt.Component.setBackground(Unknown Source) 
    at javax.swing.JComponent.setBackground(Unknown Source) 
    at javax.swing.plaf.synth.SynthStyle.installDefaults(Unknown Source) 
    at com.seaglasslookandfeel.SeaGlassStyleWrapper.installDefaults(SeaGlassStyleWrapper.java:123) 
    at com.seaglasslookandfeel.SeaGlassStyleWrapper.installDefaults(SeaGlassStyleWrapper.java:113) 
    at com.seaglasslookandfeel.SeaGlassLookAndFeel.updateStyle(SeaGlassLookAndFeel.java:2286) 
    at com.seaglasslookandfeel.ui.SeaGlassPanelUI.updateStyle(SeaGlassPanelUI.java:130) 
    at com.seaglasslookandfeel.ui.SeaGlassPanelUI.propertyChange(SeaGlassPanelUI.java:217) 
    at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) 
    at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) 
    at java.awt.Component.firePropertyChange(Unknown Source) 
    at java.awt.Component.setBackground(Unknown Source) 
    at javax.swing.JComponent.setBackground(Unknown Source) 
    at javax.swing.plaf.synth.SynthStyle.installDefaults(Unknown Source) 
    at com.seaglasslookandfeel.SeaGlassStyleWrapper.installDefaults(SeaGlassStyleWrapper.java:123) 
    at com.seaglasslookandfeel.SeaGlassStyleWrapper.installDefaults(SeaGlassStyleWrapper.java:113) 
    at com.seaglasslookandfeel.SeaGlassLookAndFeel.updateStyle(SeaGlassLookAndFeel.java:2286) 
    at com.seaglasslookandfeel.ui.SeaGlassPanelUI.updateStyle(SeaGlassPanelUI.java:130) 
    at com.seaglasslookandfeel.ui.SeaGlassPanelUI.propertyChange(SeaGlassPanelUI.java:217) 
    at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) 
    at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) 
    at java.awt.Component.firePropertyChange(Unknown Source) 
    at java.awt.Component.setBackground(Unknown Source) 
    at javax.swing.JComponent.setBackground(Unknown Source) 
    at javax.swing.plaf.synth.SynthStyle.installDefaults(Unknown Source) 
    at com.seaglasslookandfeel.SeaGlassStyleWrapper.installDefaults(SeaGlassStyleWrapper.java:123) 
    at com.seaglasslookandfeel.SeaGlassStyleWrapper.installDefaults(SeaGlassStyleWrapper.java:113) 
    at com.seaglasslookandfeel.SeaGlassLookAndFeel.updateStyle(SeaGlassLookAndFeel.java:2286) 
    at com.seaglasslookandfeel.ui.SeaGlassPanelUI.updateStyle(SeaGlassPanelUI.java:130) 
    at com.seaglasslookandfeel.ui.SeaGlassPanelUI.propertyChange(SeaGlassPanelUI.java:217) 
    at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) 
    at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) 
    at java.awt.Component.firePropertyChange(Unknown Source) 
    at java.awt.Component.setBackground(Unknown Source) 
    at javax.swing.JComponent.setBackground(Unknown Source) 
    at javax.swing.plaf.synth.SynthStyle.installDefaults(Unknown Source) 
    at com.seaglasslookandfeel.SeaGlassStyleWrapper.installDefaults(SeaGlassStyleWrapper.java:123) 
    at com.seaglasslookandfeel.SeaGlassStyleWrapper.installDefaults(SeaGlassStyleWrapper.java:113) 
    at com.seaglasslookandfeel.SeaGlassLookAndFeel.updateStyle(SeaGlassLookAndFeel.java:2286) 
    at com.seaglasslookandfeel.ui.SeaGlassPanelUI.updateStyle(SeaGlassPanelUI.java:130) 
    at com.seaglasslookandfeel.ui.SeaGlassPanelUI.propertyChange(SeaGlassPanelUI.java:217) 
    at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) 
    at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) 
    at java.awt.Component.firePropertyChange(Unknown Source) 
    at java.awt.Component.setBackground(Unknown Source) 
    at javax.swing.JComponent.setBackground(Unknown Source) 
    at javax.swing.plaf.synth.SynthStyle.installDefaults(Unknown Source) 
+1

不要混合重和轻的组件,比如在'JFrame'上添加'Panel'。这篇文章(http://java.sun.com/products/jfc/tsc/articles/mixing/)将提供更多信息。 – Alpine 2011-05-15 13:39:44

+0

也很高兴实际问一些问题。买我想你的情况,这就是为什么我得到这个例外,对吧? @Alpine(+1)现货很好,我喜欢这篇文章,我总是推荐在这种情况下使用相同的文章:) – Boro 2011-05-15 13:49:35

回答

2

该程序正在我的电脑上工作。

我以前seaglasslookandfeel-0.1.7.3.jar库从Sea Glass Look and Feel for Swing website

我得到以下输出

output screenshot

下面是代码

import java.awt.EventQueue; 
import java.awt.Panel; 
import javax.swing.JFrame; 
import javax.swing.UIManager; 

public class SeaGlassLNFTest { 

     private JFrame frame; 

     public static void main(String[] args) { 
      EventQueue.invokeLater(new Runnable() { 
       public void run() { 
        try { 
         UIManager.setLookAndFeel("com.seaglasslookandfeel.SeaGlassLookAndFeel"); 
         SeaGlassLNFTest window = new SeaGlassLNFTest(); 
         window.frame.setLocationRelativeTo(null); 
         //window.frame.pack(); 
         window.frame.setVisible(true); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 
      }); 
     } 

     public SeaGlassLNFTest(){ 
      initialize(); 
     } 

     private void initialize() { 
      frame = new JFrame(); 
      frame.setBounds(100, 100, 450, 300); 
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      Panel p = new Panel(); 
      frame.add(p); 
     } 
} 

虽然我已经加入java.awt.Paneljavax.swing.JFrame,应该避免。这里有一个article,提到混合重量级和轻量级组件时期待什么的原因。

Swing外观和感觉适用于Swing(轻量级)组件,不适用于重量级组件。