Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.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 在文本框中设置日期?_Java_Gwt_Gwt2_Gwt Widgets - Fatal编程技术网

Java 在文本框中设置日期?

Java 在文本框中设置日期?,java,gwt,gwt2,gwt-widgets,Java,Gwt,Gwt2,Gwt Widgets,我为我的项目创建日期小部件 n对对象的setProperty和getProperty使用相同的小部件 public TextBox getTimeTxtbx() { // TODO Auto-generated method stub timebx =new TextBox(); timebx.setReadOnly(true); final PopupPanel popupPanel=new PopupPanel(true);

我为我的项目创建日期小部件

n对对象的setProperty和getProperty使用相同的小部件

public TextBox getTimeTxtbx() {
        // TODO Auto-generated method stub

        timebx =new TextBox();

        timebx.setReadOnly(true);
        final PopupPanel popupPanel=new PopupPanel(true);
        final DatePicker datePicker=new DatePicker();

        datePicker.addValueChangeHandler(new ValueChangeHandler<Date>() {

            public void onValueChange(ValueChangeEvent<Date> event) {
                // TODO Auto-generated method stub

                Date date=event.getValue();
                timebx.setText(DateTimeFormat.getFormat("EEE MMM dd HH:mm:ss z yyyy").format(date));
                popupPanel.hide();
            }


        });
        popupPanel.setWidget(datePicker);
        timebx.addClickHandler(new ClickHandler() {

            public void onClick(ClickEvent event) {
                // TODO Auto-generated method stub
                String strDate = timebx.getText();
                System.out.println(" strDate " +strDate);
                DateTimeFormat format = DateTimeFormat.getFormat("[EEE MMM dd HH:mm:ss z yyyy]");
                try {  
                      Date selDate = (Date)format.parse(strDate); 
                      datePicker.setValue(selDate, true);
                    } catch(Exception pe){
                     // setting current date
                        System.out.println("error" +pe);
                     datePicker.setValue(new Date(), true);
                    }
                int x=timebx.getAbsoluteLeft();
                int y=timebx.getAbsoluteTop();
                popupPanel.setPopupPosition(x, y+20);
                popupPanel.show();
            }
        });
        return timebx;
    }
    public void setTimebx(String string) {
        // TODO Auto-generated method stub
        timebx.setText(string);
    }
在flexTable中,上述代码位于一个
迭代器中,并被称为两次。

如图所示:testDate接收日期为

当我点击testDate时,Received on的值被更改


编辑

public ListBox getBooleanBox() {
        // TODO Auto-generated method stub
        selectBoolean = new ListBox(false);
        //selectBoolean.setName(title);
        selectBoolean.setStyleName("cmis-Customproperties-TextBox");
        selectBoolean.setSize("150px", "20px");
        selectBoolean.addItem("True","True");
        selectBoolean.addItem("False", "False");
        return selectBoolean;
    }
    public void setBooleanBox(String value){
         int itemCount = selectBoolean.getItemCount();
         for(int i = 0 ;i < itemCount;i++){
             if(selectBoolean.getItemText(i).equalsIgnoreCase(value)){
                 selectBoolean.setSelectedIndex(i);
             }
         }
    }
这是非常好的工作。
我得到了正确的值。

在我看来,testingDate和receivedOn的
textBoxDisplay
是同一个小部件实例。这意味着,如果添加了receivedOn,它将覆盖testingDate,因此,当您单击testingDate图标时,会出现弹出窗口。因此,testingDate和receivedOn都需要一个
textBoxDisplay
,比如:
textBoxDisplayTestingDate
textBoxDisplayReceivedOn
这是实现中的一个参考问题

在第二次迭代
gettimextbx
(当您在textbox上创建Received时)时,您已经将
textBoxDisplay
实例中的局部变量
timebx
设置为一个新的引用,即在textbox上接收的引用。您的
datePicker
onValueChange
实现在
timebx
上设置文本,因此在您的第二次迭代中设置的是Received on textbox,而不是
testingDate
文本框

TextBoxDisplay textBoxDisplay = new TextBoxDisplay();
flexTable.setWidget(i, j,textBoxDisplay.getTimeTxtbx());
textBoxDisplay.setTimebx(customProperty.getValues().toString());
尝试在迭代过程中使用新的
TextBoxDisplay
实例

TextBoxDisplay textBoxDisplay = new TextBoxDisplay();
flexTable.setWidget(i, j,textBoxDisplay.getTimeTxtbx());
textBoxDisplay.setTimebx(customProperty.getValues().toString());

@Keppil当我点击testDate的文本框时,弹出窗口出现在ReceivedOn的文本框上,并且ReceivedOn文本框的值发生了变化。我还怀疑是否实例化了对象。我正在使用布尔列表进行类似的编码。。AnimationEnabled和testingBoolean。。它运转良好。。请检查编辑区域。使用布尔列表,您仅初始化列表框,而不添加处理程序。因此,在初始化阶段之外不会访问
selectBoolean
。但是,
selectBoolean
将是最后一个初始化的列表框。因此,如果您添加了一个更改处理程序,这意味着如果您的任何列表框更改了值,并且您在处理程序中读取了
selectBoolean
的值,那么它将读取最后初始化的列表框的值。
TextBoxDisplay textBoxDisplay = new TextBoxDisplay();
flexTable.setWidget(i, j,textBoxDisplay.getTimeTxtbx());
textBoxDisplay.setTimebx(customProperty.getValues().toString());