2013-10-03 9 views
0

여기 내 코드가 작동하지 않습니다. 이미지는 여전히 왼쪽 상단에 있습니다.GWT : 그리드에서 이미지 정렬 중심을 만드는 방법

public class MyImage extends Composite{ 

private Grid panel; 
private Image image; 

public MyImage(String imageUrl){ 
    image = new Image(imageUrl); 
    panel = new Grid(3,3); 
    panel.setSize("150px", "150px"); 
    image.setSize("96px", "96px"); 
    panel.getCellFormatter().setHorizontalAlignment(1, 1, HasHorizontalAlignment.ALIGN_CENTER); 
    panel.getCellFormatter().setVerticalAlignment(1, 1, HasVerticalAlignment.ALIGN_MIDDLE); 
    panel.setWidget(1, 1, image); 

    initWidget(panel); 
} 

} 대신 격자의

답변

2

사용 DOM 스타일 속성 :

DOM.setStyleAttribute(image.getElement(), "marginLeft", "auto"); 
    DOM.setStyleAttribute(image.getElement(), "marginRight", "auto"); 
    DOM.setStyleAttribute(image.getElement(), "marginTop", "auto"); 
    DOM.setStyleAttribute(image.getElement(), "marginBottom", "auto"); 

위의 그리드로 설정 이제 이미지를 그리드의 셀에 이미지 정확히 중심을두고, 아래에서

코드입니다 . 그리드를 정확히보기의 중앙에 배치하고자하는 경우 :

DOM.setStyleAttribute(panel.getElement(), "marginLeft", "auto"); 
    DOM.setStyleAttribute(panel.getElement(), "marginRight", "auto"); 
    DOM.setStyleAttribute(panel.getElement(), "marginTop", "auto"); 
    DOM.setStyleAttribute(panel.getElement(), "marginBottom", "auto"); 
0

, 당신은 flowpanel를 사용하고 그 위에 이미지를 추가하고 이미지의 패딩을 설정할 수 있습니다. 효과가있을 것입니다.

  fPnlMainContainer = new FlowPanel(); 
      image = new Image("info.png"); 


      image.setSize("96px", "96px"); 

      fPnlMainContainer.add(image); 
      image.getElement().getStyle().setPadding(123, Unit.PX); 


      initWidget(fPnlMainContainer); 
+0

답장을 보내 주셔서 감사합니다. –

+0

MyImage는 래핑 된 Image 클래스입니다. 이미지가 얼마나 큰지간에 이미지가 정확히 중앙에 오길 원합니다. 예를 들어 이미지의 크기를 변경 한 다음 코드에서 채우기를 변경해야합니다. 나는 이미지의 크기조차도 변경하지 않아도되는 것을 선호한다. –

관련 문제