0

I create widgets for date for my project.

n using the same widget for setProperty and getProperty of a object.

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

I am adding this widgets in flexTable in different gui class

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

In a flexTable , this above code is inside a iterator and called Twice. ここに画像の説明を入力

Like in Image : testDate an received on.

When i click on testDate the value of Received On is Changed


Edited

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

adding in flexTable

customPropertyTabel.setWidget(i, j,textBoxDisplay.getBooleanBox());
textBoxDisplay.setBooleanBox(removeSymbol(customProperty.getValues().toString()));

and this is working perfectly fine. I got the correct values.

4

2 に答える 2

1

私にtextBoxDisplayは、testingDateとreceivedOnの両方で同じウィジェットインスタンスであるように見えます。つまり、receivedOnが追加されると、testingDateが上書きされるため、testingDateのアイコンをクリックするとポップアップが表示されます。textBoxDisplayしたがって、testingDateとreceivedOnの両方に次のようなtextBoxDisplayTestingDateが必要です。textBoxDisplayReceivedOn

于 2012-07-24T09:47:28.653 に答える
1

これは、実装における参照の問題です。

2回目の繰り返しgetTimeTxtbx(Received Onテキストボックスを作成するとき)で、インスタンスのローカル変数timebxtextBoxDisplayReceived Onテキストボックスである新しい参照に設定しました。あなたdatePickeronValueChange実装はテキストを on に設定したため、 2回目の反復でテキストボックスtimebxの代わりに Received On テキストボックスが設定されます。testingDate

TextBoxDisplay反復中に代わりにの新しいインスタンスを使用してみてください。

TextBoxDisplay textBoxDisplay = new TextBoxDisplay();
flexTable.setWidget(i, j,textBoxDisplay.getTimeTxtbx());
textBoxDisplay.setTimebx(customProperty.getValues().toString());
于 2012-07-24T09:51:28.510 に答える