2016-06-07 7 views
0

Ich muss ein JFreeChart einfügen, wenn das JFrame-Layout null ist. Könnte mir jemand helfen? Ich habe einen Code aus dem Internet, und hat einige Änderungen vorgenommen, um ein Null-Layout zu setzen ('cose der ursprüngliche Code verwendet Border-Layout) und es funktioniert nicht.Wie füge ich ein JFreeChart zu einem JPanel in einem JFrame mit Null-Layout ein?

Der Code unten funktioniert nicht

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

Die kurze und lange Antwort wäre, verwenden Sie keine Null-Layouts – MadProgrammer

Antwort

1

Ihr Diagramm nicht angezeigt, weil Sie das Layout der JPanel festgelegt haben auf null. Ohne ein Layout ist das JPanel, die Kinder zu verwalten nicht in der Lage und malen sie auf der Grundlage ihrer bevorzugten Größen, weshalb man nichts sehen, wenn Sie Ihren Code ausführen

Durch das Entfernen dieser Zeile:

jPanel1.setLayout(null); 

Die JPanel wird standardmäßig auf FlowLayout
(Sie können mehr lesen: https://docs.oracle.com/javase/tutorial/uiswing/layout/flow.html)

Welche der folgenden anzeigt:

enter image description here


Wenn Sie das Layout als null haben müssen, benutzen Sie bitte diesen Beitrag um weitere Informationen lesen: http://docs.oracle.com/javase/tutorial/uiswing/layout/none.html

Aber ich würde empfehlen, stattdessen zur Verfügung eine der Layout-Manager verwenden:

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