Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Blackberry刷新字段标签_Blackberry_User Interface_Java Me_Blackberry Simulator_Blackberry Jde - Fatal编程技术网

Java Blackberry刷新字段标签

Java Blackberry刷新字段标签,blackberry,user-interface,java-me,blackberry-simulator,blackberry-jde,Blackberry,User Interface,Java Me,Blackberry Simulator,Blackberry Jde,我有一节主课和一节屏幕课。我有一个启动日期选择器的按钮。当日期选择器关闭时,我需要用所选值刷新按钮的标签。我该怎么做 我尝试了invalidate,创建了一个CustomButtonField,它实现了不同的onFocus、onFocus和其他一些东西,但我想我实现它们的方式是错误的 我的两个班级是这些 主 public class TestClass extends UiApplication { public static Calendar alarm1time = Calendar

我有一节主课和一节屏幕课。我有一个启动日期选择器的按钮。当日期选择器关闭时,我需要用所选值刷新按钮的标签。我该怎么做

我尝试了invalidate,创建了一个CustomButtonField,它实现了不同的onFocus、onFocus和其他一些东西,但我想我实现它们的方式是错误的

我的两个班级是这些

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

我在黑莓开发论坛上找到了一种方法

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(....)
            }
        }
    });
}

一种更常见的方法是让ChangeListener监听按钮点击,并在其中执行类似的处理

我认为,这有助于您:

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