代号一 - 自定义日历日按钮

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;
}