2011-03-22 87 views
0

我有一個擴展了smartgwt ImgButton的類。當按下按鈕時,應該顯示包含更多按鈕的彈出窗口。這個彈出框中的按鈕不應該像普通按鈕那樣呈現,而應該像文本鏈接 - 所以我應用了一個自定義CSS類。到目前爲止一切正常。但是,當我按下彈出窗口中的任何按鈕時,按鈕的背景變得透明,彈出窗口後面的文字閃爍。這很醜陋,但我找不到解決這個問題的方法。帶按鈕的GWT PopupPanel

有沒有人有一個想法如何保持按鈕被按下時的背景顏色?

下面是代碼:

import com.google.gwt.user.client.ui.PopupPanel; 
import com.google.gwt.user.client.ui.VerticalPanel; 
import com.smartgwt.client.types.Alignment; 
import com.smartgwt.client.widgets.ImgButton; 
import com.smartgwt.client.widgets.Button; 
import com.smartgwt.client.widgets.events.ClickEvent; 
import com.smartgwt.client.widgets.events.ClickHandler; 

public class MultiButton extends ImgButton { 

    private PopupPanel popup; 
    private VerticalPanel content; 

    public MultiButton() { 
     super(); 
     popup = new PopupPanel(); 
     popup.setAnimationEnabled(true); 
     popup.setAutoHideEnabled(true); 

     content = new VerticalPanel(); 
     popup.add(content); 

     this.setWidth(18); 
     this.setHeight(18); 
     this.setShowRollOver(false); 
     this.setShowDown(false); 
     this.setSrc("person.png"); 
     this.addClickHandler(new ClickHandler() { 

      @Override 
      public void onClick(final ClickEvent event) { 
       popup.setPopupPositionAndShow(new PopupPanel.PositionCallback() { 

        @Override 
        public void setPosition(int offsetWidth, int offsetHeight) { 
         int left = event.getX() + 7; 
         int top = event.getY() + 7; 

         popup.setPopupPosition(left, top); 
        } 
       }); 
      } 
     }); 
    } 

    public void addMultiButtonEntry(String name, ClickHandler handler) {   
     Button b = new Button(popup.getStyleName()); 
     b.addClickHandler(handler); 

     b.setShowHover(false); 
     b.setShowRollOver(false); 

     b.setBaseStyle("nt-multibutton-button"); 

     b.setAlign(Alignment.LEFT); 

     content.add(b); 
    } 
} 

,這是CSS定義:

.nt-multibutton-button { 
    border: 0px !important; 
    color: #657380; 
    font-size: 11px; 
    font-weight: bold; 
    text-align: left; 
    padding-left: 5px; 
    width:90%; 
    background-color: white;  
} 

感謝您的每一個提示! PS:我知道混合SmartGWT和GWT組件並不是很好的風格,但我沒有在SmartGWT中找到PopUp,我也不想編寫自己的代碼。

+0

你應該使用Firebug知道哪種風格對這種透明度負責,並嘗試在CSS中覆蓋它。它可能工作... – 2011-03-22 11:05:16

回答

3

我剛剛發現如何做到這一點。

我添加了一個風格主文件名和樣式名稱的按鈕,現在它的工作原理:)

所以對於彈出按鈕現在創建如下:

Button b = new Button(name); 
    b.addClickHandler(handler); 

    b.setShowHover(false); 
    b.setShowRollOver(false); 

    String css = "nt-multibutton-button"; 
    b.setStylePrimaryName(css); 
    b.setBaseStyle(css); 
    b.setStyleName(css); 

    b.setAlign(Alignment.LEFT); 

    content.add(b);