# Chart-Unterschied Java 7 und Java 8



## Foermchen82 (18. Feb 2015)

Hallo zusammen,

der folgende Code wird in Java 7 und Java 8 unterschiedlich ausgeführt. Mein Ziel ist es, das es wie in Java 7 funktioniert. Ich möchte Flächen selbst umreisen und füllen können.
In Java 7 werden die Punkte nach der Reihe, wie sie in die Liste eingefügt wurden gezeichnet und bilden so eine Raute. In Java 8 wird die Liste scheinbar irgendwie sortiert. Das ist für mich aber inhaltlich falsch.
Wie schaffe ich das?

```
package linechartsample;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.AreaChart;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;

public class LineChartSample extends Application {

	@Override
	public void start(Stage stage) {
		stage.setTitle("Line Chart Sample");
		final NumberAxis xAxis = new NumberAxis();
		final NumberAxis yAxis = new NumberAxis();
		xAxis.setLabel("Month");
		final LineChart<Number, Number> lineChart = new LineChart<Number, Number>(
				xAxis, yAxis);

		lineChart.setTitle("Stock Monitoring, 2010");
		lineChart.setCreateSymbols(false);
		XYChart.Series series1 = new XYChart.Series();
		series1.setName("Portfolio 1");

		series1.getData().add(new AreaChart.Data(1, 10));
		series1.getData().add(new AreaChart.Data(2, 20));
		series1.getData().add(new AreaChart.Data(3, 10));
		series1.getData().add(new AreaChart.Data(2, 5));
		series1.getData().add(new AreaChart.Data(1, 10));

		Scene scene = new Scene(lineChart, 800, 600);
		lineChart.getData().addAll(series1);

		StringBuilder builder = new StringBuilder();
//		builder.append("-fx-stroke: ");
//		builder.append("#");
//		builder.append(Integer.toHexString(115));
//		builder.append(Integer.toHexString(115));
//		builder.append(Integer.toHexString(115));
//		builder.append(Integer.toHexString(100));
		
		builder.append("-fx-fill: ");
		builder.append("#");
		builder.append(Integer.toHexString(215));
		builder.append(Integer.toHexString(115));
		builder.append(Integer.toHexString(115));
		builder.append(Integer.toHexString(100));
		series1.getNode().setStyle(builder.toString());
		stage.setScene(scene);
		stage.show();
	}

	public static void main(String[] args) {
		launch(args);
	}
}
```

Vielen Dank im Voraus


----------



## dzim (19. Feb 2015)

Hm... Keine genaue Ahnung, aber vielleicht solltest du die Daten dann nicht direkt übergeben, sondern dir erst eine Liste mittels FXCollections erstellen. Zum Beispiel aus einer LinkedList oder so... (Methode *#observableList(java.util.List<E> list)*) Dann sollte die Sortierung ja gleich bleiben.


----------



## Foermchen82 (19. Feb 2015)

Hi dezim,

danke für die Antwort. Hat leider nicht funktioniert.

Ich denke, dass es irgendetwas mit dem Rendern zu tun hat. D.h. erst hier zeichnet Java8 die Punkte tatsächlich von links nach rechts und nicht nach der Reihenfolge wie sie in der Liste sind.


----------



## dzim (19. Feb 2015)

Hm... Ok. dann kann ich dir leider eher nicht weiterhelfen. Sorry!


----------

