2011-05-15 126 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(輕量級)組件,不適用於重量級組件。