Codename One Calendar View не может изменить текст текущих дней

#java #calendar #codenameone

#java #Календарь #codenameone

Вопрос:

Я расширил календарь в Codename One, однако, похоже, я не смог обновить текст для дней в текущем месяце, но я могу легко обновить дни, которые появляются до или после выбранного месяца

На изображении ниже показано, что я изменил другие дни на букву «F» :

Есть идеи, где я это упускаю, потому что я все перепробовал! Я использую netbeans, также используя пример «Chrome» для проверки моего случая.

 protected com.codename1.ui.Calendar gui_Calendar = new com.codename1.ui.Calendar(){
    @Override protected void setDayText(Component c, String t){
        System.err.println(c " | " t);
        super.setDayText(c, "H");
        Button b=(Button)c;
        b.setText("F");
    }
    protected void setDayUIID(Component cmp, String uiid){
    //   System.err.println(cmp " | " uiid);
        super.setDayUIID(cmp, uiid);
        
    }
    @Override protected Component createDayComponent(){
        Component c = super.createDayComponent();
        Button b =(Button)c;
        System.err.println("com:"  b " text:"  b.getText());
        b.setText("GH");
        return c;
    }
    @Override protected Label createDayTitle(int day){
        //this create label for SUMTF
        Label l =super.createDayTitle(day);
        System.err.println("label: " l.getText() " d: " day);
        return l;
    }
    @Override protected String getDayText(Component cmp){
        String s=super.getDayText(cmp);
        System.err.println("TEXT: " s);
        return s;
    }
    @Override protected void updateButtonDayDate(Component dayButton, int currentMonth, int day){
        System.err.println("dayButton: " dayButton  " m: " currentMonth  " d: " day);
        Button b=(Button)dayButton;
        b.setText("M");
        super.updateButtonDayDate(dayButton, currentMonth, day);
    }
    @Override protected void updateButtonDayDate(Component dayButton, int year, int currentMonth, int day){
        System.err.println("dayButton: " dayButton  " Y: " year " m: " currentMonth  " d: " day);
        Button b=(Button)dayButton;
        b.setText("Y");
        super.updateButtonDayDate(dayButton, currentMonth, day);
    }

};
  

Комментарии:

1.Почему вы вызываете, setText перед вызовом super? Если вы сделаете это после super.updateButtonDayDate , это сработает. Очевидно, что вам также необходимо включить информацию о дне при настройке текста.

2. @ShaiAlmog Я действительно не понимаю логики, но это сработало, спасибо!

3. updateButtonDayDate в базовом классе есть возможность задать текст кнопки, которую он использует setText . Таким образом, вы вызываете setText , а затем updateButtonDayDate который снова вызывает setText с другим значением.

4. @shaialmog понял, спасибо