2011-01-19 63 views
0

我正在用下面的代碼動態地創建一個flex表。GWT Flex表問題

for (int CurrentRow=1;CurrentRow<2;CurrentRow++) 
       { 
        Label lblGettingName = new Label("Getting Name..."); 
        View.getMainFlex().setWidget(CurrentRow, 0, lblGettingName); 

        Button btnViewDetails = new Button("View Details"); 
        View.getMainFlex().setWidget(CurrentRow, 1, btnViewDetails); 

        Label lblGettingBid = new Label("Getting Bid..."); 
        View.getMainFlex().setWidget(CurrentRow, 2, lblGettingBid); 
        View.getMainFlex().getFlexCellFormatter().setStyleName(CurrentRow, 2, "BackNormalNotBold"); 

        Label lblGettingBidDesription = new Label("Getting Bid Desription..."); 
        lblGettingBidDesription.setStyleName("BidDesc"); 
        View.getMainFlex().setWidget(CurrentRow, 3, lblGettingBidDesription); 
        View.getMainFlex().getCellFormatter().setWidth(CurrentRow, 3, "40"); 
        View.getMainFlex().getFlexCellFormatter().setStylePrimaryName(CurrentRow, 3, ".BidDesc"); 

        Label lblCalculating = new Label("Calculating.."); 

        Label lblCalculatingTime = new Label("Calculating Time..."); 
        View.getMainFlex().setWidget(CurrentRow, 4, lblCalculatingTime); 
        View.getMainFlex().getFlexCellFormatter().setStyleName(1,4, "BackNormalNotBold"); 

        TextBox textBox = new TextBox(); 
        View.getMainFlex().setWidget(CurrentRow+1, 3, textBox); 
        View.getMainFlex().getCellFormatter().setWidth(CurrentRow+1, 3, "40"); 

        View.getMainFlex().getFlexCellFormatter().setStyleName(CurrentRow, 0, "BackNormalNotBold"); 
        View.getMainFlex().getFlexCellFormatter().setStyleName(CurrentRow, 1, "BackNormalNotBold"); 
        View.getMainFlex().getFlexCellFormatter().setStyleName(CurrentRow, 2, "BackNormalNotBold"); 
        View.getMainFlex().getFlexCellFormatter().setStyleName(CurrentRow+1, 3, "BackNormalNotBold"); 
        View.getMainFlex().getFlexCellFormatter().setRowSpan(CurrentRow, 4, 3); 
        View.getMainFlex().getFlexCellFormatter().setRowSpan(CurrentRow, 2, 3); 
        View.getMainFlex().getFlexCellFormatter().setRowSpan(CurrentRow, 1, 3); 
        View.getMainFlex().getFlexCellFormatter().setRowSpan(CurrentRow, 0, 3); 
        View.getMainFlex().getFlexCellFormatter().setColSpan(CurrentRow+1, 3, 2); 
        View.getMainFlex().getFlexCellFormatter().setColSpan(CurrentRow, 3, 2); 
        View.getMainFlex().getFlexCellFormatter().setColSpan(CurrentRow-1, 3, 2); 

        View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow, 1, HasHorizontalAlignment.ALIGN_CENTER); 
        View.getMainFlex().getCellFormatter().setVerticalAlignment(CurrentRow, 1, HasVerticalAlignment.ALIGN_MIDDLE); 
        View.getMainFlex().getCellFormatter().setVerticalAlignment(CurrentRow, 0, HasVerticalAlignment.ALIGN_MIDDLE); 
        View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow, 0, HasHorizontalAlignment.ALIGN_CENTER); 
        View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow, 2, HasHorizontalAlignment.ALIGN_CENTER); 
        View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow+1, 3, HasHorizontalAlignment.ALIGN_CENTER); 
        View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow, 3, HasHorizontalAlignment.ALIGN_CENTER); 

        Button btnPlaceBid = new Button("Bid!"); 
        View.getMainFlex().setWidget(CurrentRow+2, 3, btnPlaceBid); 
        View.getMainFlex().getCellFormatter().setWidth(CurrentRow+2, 3, "20"); 
        btnPlaceBid.setSize("66px", "26px"); 

        ToggleButton tglbtnAutomate = new ToggleButton("Automate"); 
        View.getMainFlex().setWidget(3, 4, tglbtnAutomate); 
        View.getMainFlex().getCellFormatter().setWidth(3, 4, "20"); 
        tglbtnAutomate.getDownHoveringFace().setText("TurnOFF"); 
        tglbtnAutomate.getUpHoveringFace().setText("TurnON"); 
        tglbtnAutomate.getDownDisabledFace().setText("Enable"); 
        tglbtnAutomate.setHTML("Auto:OFF"); 
        tglbtnAutomate.getUpFace().setHTML("Auto:OFF"); 
        tglbtnAutomate.getDownFace().setHTML("Auto:ON"); 
        tglbtnAutomate.setSize("54px", "18px"); 
        View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow+2, 3, HasHorizontalAlignment.ALIGN_RIGHT); 
        View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow-1, 4, HasHorizontalAlignment.ALIGN_CENTER); 
        View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow, 4, HasHorizontalAlignment.ALIGN_CENTER); 
       } 
       FlexTableHelper.fixRowSpan(View.getMainFlex()); 

當循環只執行一次,產生正確的佈局,但是當我嘗試創建超過100列,佈局degerate

回答

0

與flextable問題最有可能是由setRowSpan/setColSpan方法造成其很容易造成佈局破壞。而不是使用這些方法,你可以創建複合小部件/ Html並放置在單元格中,這樣Flextable將具有更少的行數/列數。

0

FlexTable使用td的舊元素屬性,如寬度,高度,對齊方式等。 即使在最新版本中,它也不適合使用CSS。例如,IE11不再支持< td align =「...」>。