1

У меня есть класс и класс экрана. У меня есть кнопка, которая запускает datepicker. Когда датапикер закрыт, мне нужно, чтобы метка кнопки была обновлена ​​с выбранным значением. Как мне это сделать?Java Blackberry Refresh Field Label

Я попытался с Invalidate, создавая CustomButtonField, который реализует различную OnFocus, onUnFocus, и некоторые другие вещи, но я предполагаю, что я реализовал их в неправильном направлении ...

Мои два clases эти те ...

Главная ...

public class TestClass extends UiApplication 
{ 
    public static Calendar alarm1time = Calendar.getInstance(TimeZone.getTimeZone("GMT-3")); 

    public static void main(String[] args) 
    { 
     TestClass testClass = new TestClass(); 
     testClass.enterEventDispatcher(); 
    } 

    public TestClass() 
    { 
     pushScreen(new TestClassScreen()); 
    } 
} 

экран ...

public final class TestClassScreen extends MainScreen 
{ 
    public TestClassScreen() 
    { 
     ButtonField alarm1 = new ButtonField("Alarm : " + TestClass.alarm1time.get(Calendar.HOUR_OF_DAY) + ":" + TestClass.alarm1time.get(Calendar.MINUTE) ,ButtonField.FOCUSABLE) 
     { 
      public boolean navigationClick (int status , int time) 
      { 
       datePicker(1); 
       return true; 
      } 
     }; 
     setTitle("Test Alarm"); 
     add(new RichTextField(" ")); 
     add(alarm1); 
    } 

    public void datePicker(final int alarmNumber) 
    { 
     UiApplication.getUiApplication().invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       DateTimePicker datePicker = null; 
       datePicker = DateTimePicker.createInstance(TestClass.alarm1time, null, "HH:mm"); 
       if(datePicker.doModal()) 
       { 
        Calendar cal = datePicker.getDateTime(); 
        TestClass.alarm1time = cal; 
        //Here I need the label to be refreshed, after the datePicker is Ok 
       } 
      } 
     }); 
    } 
} 

ответ

0

я нашел один путь в Форуме развития Blackberry ...

public boolean navigationClick (int status , int time) 
{ 
    datePicker(1, this); 
    return true; 
} 

public void datePicker(final int alarmNumber, final ButtonField buttonToUpdate) 
{ 
    UiApplication.getUiApplication().invokeLater(new Runnable() 
    { 
     public void run() 
     { 
      DateTimePicker datePicker = null; 
      datePicker = DateTimePicker.createInstance(TestClass.alarm1time, null, "HH:mm"); 
      if(datePicker.doModal()) 
      { 
       Calendar cal = datePicker.getDateTime(); 
       TestClass.alarm1time = cal; 
       buttonToUpdate.setLabel(....) 
      } 
     } 
    }); 
} 

Более обычным способом будет иметь изменение слушателя слушать нажатия кнопок и сделать аналогичную обработку там.

0

Я думаю, это поможет вам:

public class Def extends MainScreen 
{ 
ButtonField show; 
LabelField label; 
String str=""; 
ObjectChoiceField choiceField; 
public Def() 
{ 
    createGUI(); 
} 

private void createGUI() 
{ 
    String st_ar[]={"Date Picker"}; 
    choiceField=new ObjectChoiceField("Select Date: ", st_ar) 
    { 
     protected boolean navigationClick(int status, int time) 
     { 
      DateTimePicker datePicker = DateTimePicker.createInstance(Calendar.getInstance(), "yyyy-MM-dd", null); 
      datePicker.doModal(); 
      Calendar calendar=datePicker.getDateTime(); 
      str=String.valueOf(calendar.get(Calendar.DAY_OF_MONTH))+"-"+String.valueOf(calendar.get(Calendar.MONTH)+1)+"-"+calendar.get(Calendar.YEAR); 
      return true; 
     } 
    }; 
    add(choiceField);  

    label=new LabelField("",Field.NON_FOCUSABLE); 
    add(label); 

    show=new ButtonField("Show"); 
    show.setChangeListener(new FieldChangeListener() 
    { 
     public void fieldChanged(Field field, int context) 
     { 
      label.setText("Time is: "+str); 
     } 
    }); 
    add(show); 
} 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^