0

チェックボックスのクリックハンドラーコードが機能しない...コンパイル時エラーはありません...スナップショットを見てくださいポップアップに画像がないスナップショットを見てください...私はそれを強調表示しました

            cb1.addClickHandler(new ClickHandler(){

                public void onClick(ClickEvent event) {

                    System.out.println("hello2");
                    boolean checked = ((CheckBox) event.getSource()).getValue();
                    if (checked) {
                        System.out.println("hello3");
                        int left = toothWidget.getToothImage().getAbsoluteLeft();
                        int top =  toothWidget.getVPanel().getAbsoluteTop();//toothWidget.getToothImage().getAbsoluteTop();
                        Image im = new Image();
                        im.setUrl(GWT.getHostPageBaseURL()+"/images/"+menuItem.getImg());
                        System.out.println(GWT.getHostPageBaseURL()+"/images/"+menuItem.getImg());
                        int offx = left;
                        int offy = top;     
                        final PopupPanel popup1 = new PopupPanel(true);
                        popup1.setStylePrimaryName("transparent");
                        popup1.setPopupPosition(Math.max(offx, 0),Math.max(offy, 0));
                        //popup.add(im);
                        ToothWidget wgt = new ToothWidget(toothWidget.getToothNumber(),menuItem.getImg(), toothWidget.getTeeth());
                        toothWidget.getTeeth().getMap().get(toothWidget.getToothNumber()).put(menuItem.getName(), wgt);
                        wgt.setMenu(toothWidget.getMenu());
                        wgt.setPanel(popup1);
                        popup1.add(wgt);
                        popup1.show();
                    }

                    else{
                        ToothWidget wgt = toothWidget.getTeeth().getMap().get(toothWidget.getToothNumber()).remove(menuItem.getName());
                        wgt.getPanel().hide();
                    }
                }
             });
4

2 に答える 2

0

これを試して。確実に機能し、値の変更に使用されるValueChangeHandlerを使用することをお勧めします。

CheckBox cb1 = new CheckBox();
cb1.addValueChangeHandler(new ValueChangeHandler<Boolean>() {

    @Override
    public void onValueChange(ValueChangeEvent<Boolean> event) {
            Boolean isChecked = event.getValue();
            if (isChecked) {
                    System.out.println("hello3");
                    int left = toothWidget.getToothImage().getAbsoluteLeft();
                    int top =  toothWidget.getVPanel().getAbsoluteTop();//toothWidget.getToothImage().getAbsoluteTop();
                    Image im = new Image();
                    im.setUrl(GWT.getHostPageBaseURL()+"/images/"+menuItem.getImg());
                    System.out.println(GWT.getHostPageBaseURL()+"/images/"+menuItem.getImg());
                    int offx = left;
                    int offy = top;     
                    final PopupPanel popup1 = new PopupPanel(true);
                    popup1.setStylePrimaryName("transparent");
                    popup1.setPopupPosition(Math.max(offx, 0),Math.max(offy, 0));
                    //popup.add(im);
                    ToothWidget wgt = new ToothWidget(toothWidget.getToothNumber(),menuItem.getImg(), toothWidget.getTeeth());
                    toothWidget.getTeeth().getMap().get(toothWidget.getToothNumber()).put(menuItem.getName(), wgt);
                    wgt.setMenu(toothWidget.getMenu());
                    wgt.setPanel(popup1);
                    popup1.add(wgt);
                    popup1.show();
                }
                else
                {
                    ToothWidget wgt = toothWidget.getTeeth().getMap().get(toothWidget.getToothNumber()).remove(menuItem.getName());
                    wgt.getPanel().hide();
                }

        }
    });
}

さらに、images /フォルダーは戦争の前兆の中にある必要があります(このサイトを開発したことはすでに知っていると思いますが)

また、何menuItem.getImg()が返されるかを確認してください。ファイル名のみを返し、拡張子などを完全には返さない場合があります。

于 2013-01-08T07:40:07.017 に答える
0

WEB Dev 101 - 常に FireFox/FireBug の Network/Image コンソールを使用して、URL の不一致を確認します。画像パスの 404 エラーが表示されます。

あなたの画像はどこにありますか?

1) gwt.xml に対応する public フォルダー

gwt モジュールの public フォルダーに images フォルダーがある場合は、使用する必要がありますim.setUrl(GWT.getModuleBaseURL()+"/images/"+menuItem.getImg());

また

2) webapps フォルダー

戦争/イメージに展開されたイメージがある場合は、使用する必要があります im.setUrl(GWT.getHostPageBaseURL()+"/images/"+menuItem.getImg());

上記で問題が解決しない場合は、「画像」の下に画像がまったくない可能性があります

于 2013-01-08T08:33:39.373 に答える