Добавление 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 из графического интерфейса, потому что моя форма состоит из jPanel4, некоторых изображений и некоторых jTextFields, а не только jPanel4. Мне было интересно, может быть причина в том, что весь гуй генерируется автоматически? У меня нет JFrame. Это весь код, который имеет значение. - person Doszi89; 07.09.2012
comment
Вам нужно иметь окно, в которое можно поместить JPanel, оно не может просто отображать себя. Как вы говорите, вы создаете эту JPanel из графического интерфейса, я думаю, что JFrame уже есть. Поскольку вам не следует работать с несколькими JFrame, я бы рекомендовал использовать JDialog и поместить туда свою панель или поместить jpanel где-нибудь в уже существующий JFrame. - person brimborium; 07.09.2012
comment
подскажите как добавить в фрейм или jpanel? потому что я поместил jpanel в свой фрейм, но не смог отобразить свою карту .. я не генерирую из графического интерфейса .. вручную помещаю панель для просмотра .. но не могу показать на этой панели? :( - 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 Doszi89 У меня та же проблема: я хочу добавить график в jPanel в своем графическом интерфейсе, не создавая новый Frame(); ты нашел решение!? - person Héla; 11.11.2016