2016-06-07 58 views
0

當JFrame的佈局爲空時,我需要插入一個JFreeChart。 有人可以幫我嗎? 我從互聯網上獲得了一個代碼,並做了一些修改以設置一個空佈局('原來的代碼使用邊框佈局),它不起作用。如何將JFreeChart插入到具有空佈局的JFrame中的JPanel?

代碼波紋管工作不

public static void main(String[] args) { 
    new BarChart(); 
} 

public BarChart() { 
    dataset.addValue(1.0, fiat, speed); 
    dataset.addValue(3.0, fiat, userrating); 
    dataset.addValue(5.0, fiat, millage); 
    dataset.addValue(5.0, fiat, safety); 

    dataset.addValue(5.0, audi, speed); 
    dataset.addValue(6.0, audi, userrating); 
    dataset.addValue(10.0, audi, millage); 
    dataset.addValue(4.0, audi, safety); 

    dataset.addValue(4.0, ford, speed); 
    dataset.addValue(2.0, ford, userrating); 
    dataset.addValue(3.0, ford, millage); 
    dataset.addValue(6.0, ford, safety); 

    JFreeChart barChart = ChartFactory.createBarChart("CAR USAGE STATIStICS", 
     "Category", "Score", dataset, PlotOrientation.VERTICAL, true, true, false); 
    myChart = new ChartPanel(barChart); 

    jPanel1.setLayout(null); 
    jPanel1.setPreferredSize(new Dimension(400, 200)); 
    jPanel1.add(myChart,null); 

    this.add(jPanel1); 
    this.setSize(600, 600); 
    this.setVisible(true); 
} 

public ChartPanel getMyChart() { 
    return myChart; 
} 

public void setMyChart(ChartPanel myChart) { 
    this.myChart = myChart; 
} 
+2

短而長的答案是,不要使用null佈局 – MadProgrammer

回答

1

您的圖表沒有出現,因爲你已經設置的JPanel的佈局爲空。如果沒有佈局的JPanel不能根據他們的首選大小來管理孩子,畫他們,這就是爲什麼你看到什麼,當你運行你的代碼

移除此行:

jPanel1.setLayout(null); 

的的JPanel將默認爲FlowLayout
(你可以閱讀更多:https://docs.oracle.com/javase/tutorial/uiswing/layout/flow.html

這將顯示如下:

enter image description here


如果你必須有佈局空,請閱讀這篇文章以瞭解更多信息: http://docs.oracle.com/javase/tutorial/uiswing/layout/none.html

但我會建議使用任何可用的佈局管理器來代替:

https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html https://docs.oracle.com/javase/tutorial/uiswing/layout/using.html