簡體   English   中英

如何自定義javafx.scene.chart.NumberAxis以更改20個主要刻度線的硬編碼上限

[英]How can I customise javafx.scene.chart.NumberAxis to change the hard-coded upper limit of 20 major tick marks

我在應用程序中使用JavaFX NumberAxis組件,它完成了我所需的99%。 我正在處理各種數據集,因此自動量程功能非常有用。

自動范圍算法會嘗試得出主要刻度單位,從而導致沿軸少於20個主要刻度標記。 並將值“ 20”硬編碼到源中。 在某些情況下,我確實需要將其設置為小於20,理想情況下僅為10。

那么...如何修改NumberAxis以做我想要的?

該類是最終的,並且使自動調整范圍起作用的代碼取決於層次結構更深且位於同一包內的其他代碼(NumberAxis擴展了ValueAxis,擴展了Axis)。

我求助於在源代碼樹中創建並行類,然后創建NumberAxis類的自定義版本。 所以在我的源代碼樹中

jaxafx.scene.chart.CustomNumberAxis

然后我只是將原始源代碼從NumberAxis復制到其中,並修改了自動調整范圍的方法。

不幸的是,這引發了IllegalAccessExceptions。 我在猜測是因為運行時注意到我的代碼正在嘗試調用jfxtr.jar中受程序包保護的方法。

有什么辦法解決這個問題,還是我只需要將自動調整范圍算法代碼復制到一個幫助器類中,並嘗試將其與圖表包依賴項分離即可?

因此,我放棄了避免重復的嘗試,而選擇了優雅,蠻力的解決方案。

創建了一個新包“ customchart”,並創建了三個新類CustomAxis,CustomValueAxis和CustomNumberAxis。 從相應的JavaFX原始代碼中復制代碼。 修復了一些類引用。 添加了我需要的修改...,它現在似乎可以正常工作。

所有這些都可以為1個整數創建一個setter方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM