2016-01-08 4 views
2

Я хочу загрузить SVG-файл на JPanel с помощью этого простого кода, но JPanel серый. Что-то не так?Загрузить SVG-файл на JPanel с помощью batik

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? Зачем заворачивать его в панель SVGApplication?

 Смежные вопросы

  • Нет связанных вопросов^_^