好的,我有一個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