Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

JFreeChart with JavaFX, when zoom in or zoom out, repaint works not well

ac44e0a4-99e1-4c66-9bf0-fe97cd9ac619May 8 2015 — edited May 9 2015

I have a problem using JFreeChart with JavaFX. I wrote a small program here to help explain.

At first the graph likes this:

enter image description here

I use fullScreen function to display the JFreeChart Line Chart Demo 2. Here I use SwingNode, ChartPanel to embedded JFreeChart into JavaFX Panel.(Detail part will be included in code later)

Then I press ESC to exit fullScreen. Then it looks like this:

enter image description here

So far, it's as expected. Then I use mouse drag to enlarge the window. Here comes the problem, as the following picture.

enter image description here

Can you see that, seems like appear another graph. And I must click on the window, then everything will become good.So my question is: anyone knows why? I wish the graph shows well even when I drag the window to enlarge, is there something I missed?

And here is my code:

package testxychart; 

import java.io.File;

import java.io.FileNotFoundException;

import java.util.Scanner;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

import javafx.application.Application;

import javafx.embed.swing.SwingNode;

import javafx.event.EventHandler;

import javafx.scene.Scene;

import javafx.scene.chart.LineChart;

import javafx.scene.chart.NumberAxis;

import javafx.scene.chart.XYChart;

import javafx.scene.control.SplitPane;

import javafx.scene.input.ScrollEvent;

import javafx.scene.layout.StackPane;

import javafx.stage.Stage;

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;

/** * * @author Administrator */

public class TestXYChart extends Application {


NumberAxis xAxis = new NumberAxis();

NumberAxis yAxis = new NumberAxis();

XYChart.Series series1 = new XYChart.Series();


@Override public void start(Stage primaryStage) {

SplitPane vSplitPane = new SplitPane();

vSplitPane.getItems().add(this.creatChart1());

primaryStage.setScene(new Scene(vSplitPane));

primaryStage.setFullScreen(true);

primaryStage.show();

} 


private SwingNode creatChart1(){

XYSeries series1 = new XYSeries("First");

series1.add(1.0, 1.0);

series1.add(2.0, 4.0);

series1.add(3.0, 3.0);

series1.add(4.0, 5.0);

series1.add(5.0, 5.0);

series1.add(6.0, 7.0);

series1.add(7.0, 7.0);

series1.add(8.0, 8.0);

XYSeries series2 = new XYSeries("Second");

series2.add(1.0, 5.0);

series2.add(2.0, 7.0);

series2.add(3.0, 6.0);

series2.add(4.0, 8.0);

series2.add(5.0, 4.0);

series2.add(6.0, 4.0);

series2.add(7.0, 2.0);

series2.add(8.0, 1.0);

XYSeries series3 = new XYSeries("Third");

series3.add(3.0, 4.0);

series3.add(4.0, 3.0);

series3.add(5.0, 2.0);

series3.add(6.0, 3.0);

series3.add(7.0, 6.0);

series3.add(8.0, 3.0);

series3.add(9.0, 4.0);

series3.add(10.0, 3.0);

XYSeriesCollection dataset = new XYSeriesCollection();

dataset.addSeries(series1);

dataset.addSeries(series2);

dataset.addSeries(series3); 

JFreeChart chart = ChartFactory.createXYLineChart( "Line Chart Demo 2", // chart title

                                                   "X", // x axis label

                                                   "Y", // y axis label

dataset, // data

  PlotOrientation.VERTICAL, true, // include legend

  true, // tooltips

  false // urls

  );

ChartPanel chartPane = new ChartPanel(chart);

SwingNode sNode = new SwingNode();

sNode.setContent(chartPane);

return sNode;

} 

/** * @param args the command line arguments */

  public static void main(String[] args) {

launch(args);

}   

}

Thank you so much for any advice. I think, when I use several graphs in one JavaFX Panel, this will becomes a big problem.

消息编辑者为:xing

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jun 6 2015
Added on May 8 2015
1 comment
1,537 views