简体   繁体   English

如何在 NetBeans 生成的 Jpanel 中显示 JfreeChart ( ChartPanel )

[英]How to display JfreeChart ( ChartPanel ) in Jpanel generated by NetBeans

i've generated a gui using netbeans gui generator.我已经使用 netbeans gui 生成器生成了一个 gui。 I have two panel and in one of this i want to show a chartpanel.我有两个面板,其中一个我想显示一个图表面板。 The code generated by netbeans is: netbeans生成的代码是:

private void initComponents() {

        jPanel1 = new javax.swing.JPanel();

        org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(0, 394, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(0, 294, Short.MAX_VALUE)
        );

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(0, 400, Short.MAX_VALUE)
            .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                    .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addContainerGap()))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(0, 300, Short.MAX_VALUE)
            .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(layout.createSequentialGroup()
                    .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addContainerGap()))
        );
    }

What i've done to add the chartpanel to jpanel is :我为将图表面板添加到 jpanel 所做的是:

TimeSeriesCollection dataset = new TimeSeriesCollection();
            for (int i = 0; i < 5; i++) {
                TimeSeries pop = new TimeSeries("try "+i, Day.class);
                pop.add(new Day(10+i, 1+i, 2004+i), 100*(i+2));
                pop.add(new Day(10+1*i, 1+2+i, 2004+i+1), 150*(i+2));
                pop.add(new Day(10+2*i, 1+2*i, 2004+i+2), 150*(i+3));
                pop.add(new Day(10+3*i, 1+2*i, 2004+i+3), 150*(i+4));
                pop.add(new Day(10+4*i, 1+2*i, 2004+i+10), 150*(i+5));
                dataset.addSeries(pop);
            }
            TimeSeries pop = new TimeSeries("Try asjhaihsiuahsiuahiushaiushiauhsiuhasiua"+100, Day.class);
            int i=5;
                pop.add(new Day(1, 1+i, 2004+i), 100*(i+2));
                pop.add(new Day(2, 1+2+i, 2004+i+1), 150*(i+2));
                pop.add(new Day(3, 1+2*i, 2004+i+2), 150*(i+3));
                pop.add(new Day(4, 1+2*i, 2004+i+3), 150*(i+4));
                pop.add(new Day(5, 1+2*i, 2004+i+10), 1500*(i+5));
                dataset.addSeries(pop);
            JFreeChart chart = ChartFactory.createTimeSeriesChart(
                    "Population of CSC408 Town",
                    "Date",
                    "Population",
                    dataset,
                    true,
                    true,
                    false);
            ChartPanel p = new ChartPanel(chart);

            jPanel1.add(p);

But chartpanel won't show inside jpanel.. what can i do?但是图表面板不会显示在 jpanel 里面..我该怎么办? can you help me?你能帮助我吗?

set Layout in your NetBeans panel to BorderLayout (by right click on it from design preview then set layout, or do it from code Panel.setLayout ) , after that when you want to show your chart panel, just add the chart panel into parent panel and ask for repaint.将您的 NetBeans 面板中的 Layout 设置为 BorderLayout(通过在设计预览中右键单击它然后设置布局,或者从代码 Panel.setLayout 进行设置),之后当您想要显示您的图表面板时,只需将图表面板添加到父面板中并要求重新粉刷。

netbeansPanel.add(charPanel, BorderLayout.CENTER);
netbeansPanel.validate();

also you can remove the panel in case if you want to update the chart with new one:如果您想用新图表更新图表,您也可以删除面板:

netbeansPanel.removeAll();
netbeansPanel.add(charPanel);
netbeansPanel.validate();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM