当我拥有所有 Joda DateTime 对象时,如何使用 SWT 日历?
How can I use an SWT Calendar when I have all Joda DateTime objects?
我正在 Windows(Eclipse 和 SWT)上开发 Java GUI。我需要 GUI 用户输入日期(日历小部件),然后 date/time(来自数据源)操作包括处理不同的时区。
我切换到 Joda 以获得更好的 date/time 操作,因为我认为这比标准 SWT 更好。但是,据我了解,Joda 不支持自己的日历小部件。
谁能告诉我如何做才能与 SWT 和 Joda 兼容?
我看到直接引用:
private org.joda.time.DateTime jodaDateTime;
private swt.DateTime swtDateTime;
是一个选项,但想知道还有哪些选项。
这是一个足够简单的转换,您只需创建实用方法来与默认 SWT 小部件进行转换,例如
public class DateUtils {
public static org.joda.time.DateTime makeJodaFromSWT(
org.eclipse.swt.widgets.DateTime widget) {
return new DateTime(widget.getYear(),
widget.getMonth(),
widget.getDay(),
widget.getHours(),
widget.getMinutes(),
widget.getSeconds());
}
public static void updateSWTwithJoda(
org.eclipse.swt.widgets.DateTime widget,
org.joda.time.DateTime dateTime) {
widget.setYear(dateTime.getYear());
widget.setMonth(dateTime.getMonthOfYear());
widget.setDay(dateTime.getDayOfMonth());
widget.setHours(dateTime.getHourOfDay());
widget.setMinutes(dateTime.getMinuteOfHour());
widget.setSeconds(dateTime.getSecondOfMinute());
}
}
与 public static
实用方法相比,我需要更多地了解您的项目才能提出 "smarter" 包装方案,但这应该能让您走上正轨。
我正在 Windows(Eclipse 和 SWT)上开发 Java GUI。我需要 GUI 用户输入日期(日历小部件),然后 date/time(来自数据源)操作包括处理不同的时区。
我切换到 Joda 以获得更好的 date/time 操作,因为我认为这比标准 SWT 更好。但是,据我了解,Joda 不支持自己的日历小部件。
谁能告诉我如何做才能与 SWT 和 Joda 兼容?
我看到直接引用:
private org.joda.time.DateTime jodaDateTime;
private swt.DateTime swtDateTime;
是一个选项,但想知道还有哪些选项。
这是一个足够简单的转换,您只需创建实用方法来与默认 SWT 小部件进行转换,例如
public class DateUtils {
public static org.joda.time.DateTime makeJodaFromSWT(
org.eclipse.swt.widgets.DateTime widget) {
return new DateTime(widget.getYear(),
widget.getMonth(),
widget.getDay(),
widget.getHours(),
widget.getMinutes(),
widget.getSeconds());
}
public static void updateSWTwithJoda(
org.eclipse.swt.widgets.DateTime widget,
org.joda.time.DateTime dateTime) {
widget.setYear(dateTime.getYear());
widget.setMonth(dateTime.getMonthOfYear());
widget.setDay(dateTime.getDayOfMonth());
widget.setHours(dateTime.getHourOfDay());
widget.setMinutes(dateTime.getMinuteOfHour());
widget.setSeconds(dateTime.getSecondOfMinute());
}
}
与 public static
实用方法相比,我需要更多地了解您的项目才能提出 "smarter" 包装方案,但这应该能让您走上正轨。