2016-01-08 23 views
2

我想用這個簡單的代碼在JPanel上加載SVG文件,但JPanel是灰色的。我有什麼問題嗎?用蠟染加載JPanel上的SVG文件

import javax.swing.*; 
import org.apache.batik.swing.JSVGCanvas; 


public class SVGApplication extends JPanel 
{ 
    public SVGApplication(){ 


      JSVGCanvas svg = new JSVGCanvas(); 
      // location of the SVG File 
      svg.setURI("file:/C:/Users/Linda/Desktop/test.svg"); 
      JPanel panel = new JPanel(); 
      panel.add(svg); 
    } 

    public static void main(String[] args) 
    { 
      JFrame frame = new JFrame("SVGView"); 
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      frame.getContentPane().add(new SVGApplication()); 
      frame.pack(); 
      frame.setSize(500, 400); 
      frame.setVisible(true); 
    } 
} 

回答

2

您要添加的東西到一個JPanel,一個在這裏命名爲「面板」,也被添加到什麼,因此永遠不會顯示:

public SVGApplication(){ 
     JSVGCanvas svg = new JSVGCanvas(); 
     // location of the SVG File 
     svg.setURI("file:/C:/Users/Linda/Desktop/test.svg"); 
     JPanel panel = new JPanel(); // *** what is this for? *** 
     panel.add(svg); // **** you never add this panel to anything **** 
} 

擺脫面板:

public SVGApplication(){ 
     JSVGCanvas svg = new JSVGCanvas(); 
     // location of the SVG File 
     svg.setURI("file:/C:/Users/Linda/Desktop/test.svg"); 
     // JPanel panel = new JPanel(); // *** what is this for? *** 
     // panel.add(svg); 
     add(svg); 
} 

更好的是,爲什麼不簡單地使用JSVGCanvas組件?爲什麼將它包裝在SVGA應用面板中?