Я хотел бы расширить JavaFX LineChart
, чтобы добавить некоторые функции (предоставьте доступ к легенде, чтобы ее можно было настроить, добавив видимые границы и т. Д. c.). Я создал класс EnhancedLineChart
, который объявил экземпляр в моем файле F XML, но он возвращает исключение:
Причина: com.sun.javafx.f xml .PropertyNotFoundException : Свойство "xAxis" не существует или доступно только для чтения.
Вот мой класс :
package com.ratp.oam.widgets.graph;
import com.sun.javafx.charts.Legend;
import javafx.collections.ObservableList;
import javafx.scene.chart.Axis;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
public class EnhancedLineChart extends LineChart<Number, Number> {
public EnhancedLineChart() {
super(new NumberAxis(), new NumberAxis());
}
public EnhancedLineChart(final NumberAxis xAxis, final NumberAxis yAxis) {
super(xAxis, yAxis);
}
public EnhancedLineChart(final NumberAxis xAxis, final NumberAxis yAxis,
ObservableList<Series<Number, Number>> data) {
super(xAxis, yAxis, data);
}
@Override
public Axis<Number> getXAxis() {
return super.getXAxis();
}
@Override
public Axis<Number> getYAxis() {
return super.getYAxis();
}
/**
* Fournit la légende du graphique telle qu'elle a été implémentée dans la
* classe {@link LineChart}.
*
* @return
*/
public Legend legend() {
return (Legend) super.getLegend();
}
}
и F XML file где создается мой компонент (DataGraph.f xml):
<?xml version="1.0" encoding="UTF-8"?>
<?import com.ratp.oam.widgets.graph.EnhancedLineChart?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.chart.NumberAxis?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>
<fx:root type="javafx.scene.layout.HBox" xmlns:fx="http://javafx.com/fxml/1" spacing="3">
<ScrollPane fitToWidth="true" HBox.hgrow="ALWAYS" styleClass="scroll-pane">
<fx:define>
<EnhancedLineChart fx:id="analogicalChart" createSymbols="false" animated="false" prefHeight="350">
<padding>
<Insets topRightBottomLeft="0" />
</padding>
<xAxis>
<NumberAxis fx:id="analogicalXAxis" animated="false" side="BOTTOM" forceZeroInRange="false" autoRanging="false" />
</xAxis>
<yAxis>
<NumberAxis animated="false" side="LEFT" forceZeroInRange="false" autoRanging="false" />
</yAxis>
</EnhancedLineChart>
</fx:define>
<VBox fx:id="graphBox">
<VBox fx:id="logicalPane" />
</VBox>
</ScrollPane>
</fx:root>
Как мне решить мою проблему?
Nota Bene
- Я проверил импорт пакетов в моем файле F XML.
- Я получаю тот же результат, когда удаляю 2 переопределенных метода.