![](/img/trans.png)
[英]Persian calendar - Insertion and retrieval date in Persian format from Oracle DB
[英]How to implement Persian Calendar
JavaFx上是否有波斯日歷DatePicker
的實現?
在DatePicker上沒有可以使用波斯chronology
來實現波斯日歷
我現在開發了一個即用型日歷選擇器,該選擇器還提供了波斯日歷。 它最初的靈感來自克里斯汀·舒特(Christian Schudt)的出色作品,但經過完全重寫和增強。 只需下載我的庫Time4J -v4.20(或更高版本,在Maven中可用)並使用以下代碼演示 :
CalendarPicker<PersianCalendar> picker = picker.persianWithSystemDefaults();
picker.setLengthOfAnimations(Duration.seconds(0.7));
picker.setShowInfoLabel(true);
picker.setLocale(new Locale("fa", "IR"));
picker.setShowWeeks(true);
picker.setCellCustomizer(
(cell, column, row, model, date) -> {
if (CellCustomizer.isWeekend(column, model)) {
cell.setStyle("-fx-background-color: #FFE0E0;");
cell.setDisable(true);
}
}
);
您還可以設置其他屬性,例如最短日期和最長日期。 這是使用波斯語和伊朗本地化星期模型的示例圖像。 您可以瀏覽波斯語的所有月份,年份或十年(通過單擊頁眉),也可以跳轉到當前日期(通過單擊頁腳)。
正如文檔中所述,您可以通過DatePicker
的ObjectProperty<Chronology>
設置使用的日歷系統。 您需要這樣做的方法是
public final void setChronology(Chronology value)
由於沒有實現默認的波斯/伊朗日歷系統(僅實現了hiraj系統),因此您必須編寫自己的日歷:
“ 添加新日歷可以由應用程序擴展可用時間集。添加新日歷系統需要編寫Chronology,ChronoLocalDate和Era的實現。特定於日歷系統的大多數邏輯將在ChronoLocalDate實現中。年表實現充當工廠。
為了允許發現其他時間順序,使用了ServiceLoader。 必須將名稱為“ java.time.chrono.Chronology”的文件添加到META-INF / services目錄,其中列出了實現類。 有關服務加載的更多詳細信息,請參見ServiceLoader。 對於按id或calendarType進行查找,首先找到系統提供的日歷,然后再找到應用程序提供的日歷。
每個年表必須定義一個在系統內唯一的年表ID。 如果時間順序代表由CLDR規范定義的日歷系統,則日歷類型是CLDR類型以及CLDR變體(如果適用)的串聯,
實施要求:必須謹慎實施此接口,以確保其他類正確運行。 可以實例化的所有實現必須是最終的,不可變的並且是線程安全的。 子類應盡可能可序列化。”來源: https : //docs.oracle.com/javase/8/docs/api/java/time/chrono/Chronology.html? is-external =true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.