0
이미지, 텍스트, 레이블 및 다른 이미지가있는 특수 버튼을 만들고 싶습니다.GWT는 Ui 바인더로 사용자 정의 버튼을 만듭니다.
public class CrossingStateMenuItemButton extends Composite implements HasText, HasClickHandlers,
ClickHandler {
@UiField
FocusPanel pane;
@UiField
Label label;
@UiField
Label state;
@UiField
Image error;
@UiField
Image acoustic;
private CrossingObject crossingObject;
interface CrossingStateMenuItemButtonBinder extends UiBinder<Widget, CrossingStateMenuItemButton> {
}
private static CrossingStateMenuItemButtonBinder binder = GWT
.create(CrossingStateMenuItemButtonBinder.class);
public CrossingStateMenuItemButton(CrossingObject crossingObject) {
this.crossingObject = crossingObject;
pane.addClickHandler(this);
initWidget(binder.createAndBindUi(this));
}
public CrossingObject getCrossingObject() {
return crossingObject;
}
public void setCrossingObject(CrossingObject crossingObject) {
this.crossingObject = crossingObject;
}
@Override
public void onClick(ClickEvent event) {
this.fireEvent(event);
}
@Override
public HandlerRegistration addClickHandler(ClickHandler handler) {
return addHandler(handler, ClickEvent.getType());
}
@Override
public String getText() {
return label.getText();
}
@Override
public void setText(String text) {
this.label.setText(text);
}
public void setState(LabelType state) {
this.state.setType(state);
}
public void setAcoustic(boolean enabled) {
this.acoustic.setVisible(enabled);
}
}
내가 해당 UI를 바인더 템플릿이 있습니다 :
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:b="urn:import:org.gwtbootstrap3.client.ui" xmlns:g="urn:import:org.gwtbootstrap3.client.ui.gwt"
xmlns:h="urn:import:org.gwtbootstrap3.client.ui.html" xmlns:gwt="urn:import:com.google.gwt.user.client.ui">
<ui:with field='res'
type='com.company.applicationname.client.resources.AppResources' />
<gwt:FocusPanel ui:field="pane"
addStyleNames="{res.style.crossingStateMenuItem}">
<b:Image ui:field="error"
styleName="{res.style.crossingStateMenuItemErrorImage}"></b:Image>
<b:Label ui:field="label" styleName="{res.style.crossingStateMenuItemLabel}"></b:Label>
<b:Label ui:field="state" type="DEFAULT"
styleName="{res.style.crossingStateMenuItemStateLabel}">off</b:Label>
<b:Image ui:field="acoustic"
styleName="{res.style.crossingStateMenuItemAcousticImage}"></b:Image>
</gwt:FocusPanel>
</ui:UiBinder>
을하지만 컴파일 할 때, 내가 얻을 :
형식 불일치를
나는 다음과 같은 코드가 있습니다 : FocusPanel에서 위젯으로 변환 할 수 없습니다.
지금 당장 붙어있어 문제가 어디인지 전혀 모르겠다. 다른 패널 (SimplePanel, HTMLPanel ..)을 사용해 보았습니다. 어떻게 작동 시키는가?