2015-12-20 127 views
2

我的應用會保存約會並在Multibutton列表中顯示它們,但我也使用GUI構建器創建了帶有日曆的屏幕,因爲我想創建一個「日曆視圖」,以便用戶可以看看日曆和:Codename One - 自定義日曆日按鈕

1-看到了至少一個約會高亮(定製UIID)

2-見每個日曆日每次約會,約會的次數,他已經爲這一天,以及當然的日期。

我讀過我可以通過覆蓋updateButtonDayDate()createDay()來做到這一點,但我不知道如何在我的代碼中做到這一點。你能告訴我一個例子嗎?

enter image description here

+0

Felipe,我有一個與CN1應用程序類似的問題,並且會對代碼感興趣,以防您可以找到解決方案。你能發佈一個片段嗎? – rainer

回答

2

爲您的日曆類中重寫updateButtonDayDate()createDay(),你需要創建一個擴展codenameone日曆自定義日曆(請確保您的擴展com.codename1.ui.calendar,而不是java.util)。

創建自定義日曆類後,您將不得不廢棄GUI生成器日曆並在代碼中創建一個日曆。檢查遵循下面的代碼的使用例子:

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的Calendar版本(儘管不可取)。

0

要根據列表中的項目選擇或一個代號日曆顯示多個日期,一個選擇是在日期列表和格式化日期按鈕:

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