Добавяне на ChartPanel към JPanel

Тук имам някакъв неработещ код:

    XYSeriesCollection dataset = new XYSeriesCollection();
    dataset.addSeries(series);
    JFreeChart chart = ChartFactory.createXYLineChart(null, null, null, dataset, PlotOrientation.HORIZONTAL, true, true, true);
    ChartPanel chartpanel = new ChartPanel(chart);

    chartpanel.setDomainZoomable(true);
    jPanel4.setLayout(new BorderLayout());
    jPanel4.add(chartpanel, BorderLayout.NORTH);

Така че проблемът е, че jPanel4 с диаграма не се вижда. Когато добавя своя диаграмен панел към рамка и го направя видим, той работи.

Някой знае ли каква е моята грешка?


person Doszi89    schedule 07.09.2012    source източник


Отговори (2)


Това работи перфектно за мен:

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

public class Main {
    public static void main(String[] args) {
        XYSeries series = new XYSeries("asdf");
        for (int i = 0; i < 100; i++)
            series.add(i, Math.random());
        XYSeriesCollection dataset = new XYSeriesCollection(series);
        JFreeChart chart = ChartFactory.createXYLineChart(null, null, null, dataset, PlotOrientation.HORIZONTAL, true, true, true);
        ChartPanel chartpanel = new ChartPanel(chart);
        chartpanel.setDomainZoomable(true);

        JPanel jPanel4 = new JPanel();
        jPanel4.setLayout(new BorderLayout());
        jPanel4.add(chartpanel, BorderLayout.NORTH);

        JFrame frame = new JFrame();
        frame.add(jPanel4);
        frame.pack();
        frame.setVisible(true);
    }
}

Можете ли да ни предоставите малко повече код? Влагате ли нещо друго в jPanel4? Във всяко място не може да има повече от един компонент (NORTH, SOUTH, WEST, EAST, CENTER). Поставяте ли панела си в рамка?

person brimborium    schedule 07.09.2012
comment
Не слагам нищо друго в jPanel4. Генерирам своя jPanel4 от GUI, защото моята форма се състои от jPanel4, някои изображения и някои jTextFields, не само jPanel4. Чудех се, може би причината е, че целият GUI се генерира автоматично? Нямам JFrame. Това е целият код, който има значение. - person Doszi89; 07.09.2012
comment
Трябва да имате прозорец, в който да поставите вашия JPanel, той не може просто да се показва. Както казвате, че генерирате този JPanel от GUI, мисля, че вече има JFrame. Тъй като не трябва да работите с множество JFrames, бих препоръчал да използвате JDialog и да поставите панела си там или да поставите своя jpanel някъде във вече съществуващия JFrame. - person brimborium; 07.09.2012
comment
можете ли да ми кажете как да добавя в рамка или jpanel? защото поставих jpanel в рамката си, но не можах да покажа картата си.. не генерирам от gui..ръчно поставям панел за гледане.. но не мога да покажа на този панел? :( - person Java Man; 29.11.2013
comment
@Developer Последните 7 реда поставят chartPanel в JPanel, което се добавя към JFrame. Не питаш ли точно това? Ако не се показва, вашият JPanel може да не се показва или т.н. Опитайте да поставите JLabel с някакъв текст, за да видите дали ще се покаже. Ако не, нещо не е наред с оформлението ви. - person brimborium; 02.12.2013

имате ли нещо в CENTER Layout в jpanel, иначе опитайте да добавите диаграма в центъра

ChartPanel chartpanel = new ChartPanel(chart);
chartpanel.setDomainZoomable(true);
jPanel4.add(chartpanel, BorderLayout.CENTER);

NORTH всъщност е горната част на контейнера.

person vels4j    schedule 07.09.2012
comment
@Doszi89 Имам същия проблем. Искам да добавя графиката към jPanel в моя Gui, без да създавам нов Frame(); намерихте ли решението!? - person Héla; 11.11.2016