好的,我有一个Java程序,它在FlowLayout中显示一些SVG的图块。它通过成为ScrabbleRack类并扩展JPanel,然后将JSVGCanvas切片添加到此面板来实现此目的。Java中的SVG显示不正确
然后我创建了一个框架并添加了面板。 (打包并显示它)。出现时,面板无法正常显示。它只显示第一个图块,然后显示其余图块应该显示的空间,这里有whitearea。
但是,如果我调整任何数量的帧的大小,图像将正确渲染。
public class ScrabbleRackGUI extends JPanel{
ScrabbleRack rack=new ScrabbleRack();
JSVGCanvas rackContentsImages[]=new JSVGCanvas[8];
public ScrabbleRackGUI() {
setLayout(new FlowLayout());
createComponents();
}
public void createComponents() {
//INITIALISE SOURCE IMAGES
initImages();
for (int i=0;i<rackContentsImages.length;i++){
this.add(rackContentsImages[i]);
}
}
private void initImages(){
File tempImages[]=new File[8];
for(int i=0;i<8;i++){
tempImages[i]= new File("./src/res/rackBackground.svg");
rackContentsImages[i]=new JSVGCanvas();
try {
rackContentsImages[i].setURI(tempImages[i].toURL().toString());
} catch (MalformedURLException ex) {
Logger.getLogger(ScrabbleBoardGUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public static void main(String args[])
{
JFrame frame = new JFrame("ScrabbleTest");
ScrabbleRackGUI rack= new ScrabbleRackGUI(1);
frame.add(rack);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setSize(214,70);
frame.setVisible(true);
}
}
关于如何让这个面板第一次正确显示的任何想法。
还有一些黑客会在程序结束时调整它的大小。
我以前batik呈现在Java中SVGs,对于那些谁想要重现此问题。
我们可以看到一个屏幕截图 – Rekin 2010-12-28 20:08:26
它的 “Java”,而不是 “JAVA”[Java是不是一个缩写(HTTP:?// java.sun.com/products/jdk/faq.html#B1)。 – 2011-02-04 16:23:46