代号一 - 自定义日历日按钮
Codename One - Custom Calendar day button
我的应用程序保存约会并将它们显示在多按钮列表中,但我还使用 GUI 构建器创建了一个带有日历的屏幕,因为我想创建一个 "calendar view" 以便用户可以查看在日历和:
1- 查看至少突出显示一个约会的每个日期(自定义 UIID)
2- 查看每个日历日他当天的预约数量,当然还有日期。
我读到我可以通过覆盖 updateButtonDayDate()
和 createDay()
来做到这一点,但我不知道如何在我的代码中做到这一点。你能举个例子吗?
为了覆盖日历 class 中的 updateButtonDayDate()
和 createDay()
,您需要创建一个自定义日历来扩展 codenameone 日历(确保您的扩展 com.codename1.ui.calendar
而不是 java.util
).
创建自定义日历后,您将不得不废弃 GUI 构建器日历并在代码中创建一个日历 class。检查以下代码后的用法示例:
import com.codename1.ui.Button;
import com.codename1.ui.Calendar;
import static com.codename1.ui.Component.CENTER;
public class CustomCalendar extends Calendar {
@Override
protected Button createDay() {
//Customize your button here
Button day = new Button();
day.setAlignment(CENTER);
day.setUIID("CalendarDay");
day.setEndsWith3Points(false);
day.setTickerEnabled(false);
return day;
}
@Override
protected void updateButtonDayDate(Button dayButton, int currentMonth, int day) {
//Customize day values
dayButton.setText("" + day);
}
}
要使用它,请根据您的自定义版本声明一个新日历:
CustomCalendar myCalendar = new CustomCalendar();
myContainer.add(myCalendar);
您可以在 CustomCalendar 中尝试各种操作,直到找到有效的方法。按住 Ctrl 键的同时单击“日历”以检查源并了解可以覆盖的内容和不能覆盖的内容。
您甚至可以创建扩展 Container 的日历版本(尽管不推荐)。
为了 select 或在代号日历中显示多个日期,一个选项是将日期添加到列表中并根据列表项格式化日期按钮:
cal = new Calendar() {
@Override
protected void updateButtonDayDate(Button dayButton, int currentYear, int currentMonth, int day ) {
list.add(1);
list.add(12);
list.add(13);
list.add(14);
list.add(21);
for (int day_Number : list) {
if (day_Number == day) {
dayButton.setText("" + day);
dayButton.setUIID("mycalender-day");
}
}
};
css 文件包含格式样式:
mycalender-day {
border: 1px solid whitesmoke;
color:orange;
font-family: "native:MainRegular";
font-size: 7pt;
}
我的应用程序保存约会并将它们显示在多按钮列表中,但我还使用 GUI 构建器创建了一个带有日历的屏幕,因为我想创建一个 "calendar view" 以便用户可以查看在日历和:
1- 查看至少突出显示一个约会的每个日期(自定义 UIID)
2- 查看每个日历日他当天的预约数量,当然还有日期。
我读到我可以通过覆盖 updateButtonDayDate()
和 createDay()
来做到这一点,但我不知道如何在我的代码中做到这一点。你能举个例子吗?
为了覆盖日历 class 中的 updateButtonDayDate()
和 createDay()
,您需要创建一个自定义日历来扩展 codenameone 日历(确保您的扩展 com.codename1.ui.calendar
而不是 java.util
).
创建自定义日历后,您将不得不废弃 GUI 构建器日历并在代码中创建一个日历 class。检查以下代码后的用法示例:
import com.codename1.ui.Button;
import com.codename1.ui.Calendar;
import static com.codename1.ui.Component.CENTER;
public class CustomCalendar extends Calendar {
@Override
protected Button createDay() {
//Customize your button here
Button day = new Button();
day.setAlignment(CENTER);
day.setUIID("CalendarDay");
day.setEndsWith3Points(false);
day.setTickerEnabled(false);
return day;
}
@Override
protected void updateButtonDayDate(Button dayButton, int currentMonth, int day) {
//Customize day values
dayButton.setText("" + day);
}
}
要使用它,请根据您的自定义版本声明一个新日历:
CustomCalendar myCalendar = new CustomCalendar();
myContainer.add(myCalendar);
您可以在 CustomCalendar 中尝试各种操作,直到找到有效的方法。按住 Ctrl 键的同时单击“日历”以检查源并了解可以覆盖的内容和不能覆盖的内容。
您甚至可以创建扩展 Container 的日历版本(尽管不推荐)。
为了 select 或在代号日历中显示多个日期,一个选项是将日期添加到列表中并根据列表项格式化日期按钮:
cal = new Calendar() {
@Override
protected void updateButtonDayDate(Button dayButton, int currentYear, int currentMonth, int day ) {
list.add(1);
list.add(12);
list.add(13);
list.add(14);
list.add(21);
for (int day_Number : list) {
if (day_Number == day) {
dayButton.setText("" + day);
dayButton.setUIID("mycalender-day");
}
}
};
css 文件包含格式样式:
mycalender-day {
border: 1px solid whitesmoke;
color:orange;
font-family: "native:MainRegular";
font-size: 7pt;
}