2012-09-11 48 views
1

我使用TableLayoutManager,因爲你可以從下面看到代碼 現在的問題是這個我不能專注於細節按鈕,我只能專注於調用buton,如果我是使用黑莓9650的模擬器的話,我可以觸摸按鈕,但它真的很奇怪,我不能獲得焦點的按鈕,請幫我黑莓ButtonField沒有得到重點,在TableLayoutManager中使用

private void addDetailListing(){ 
    VerticalFieldManager mainManager=new VerticalFieldManager(Manager.USE_ALL_WIDTH); 
    HorizontalFieldManager header=new HorizontalFieldManager(Manager.USE_ALL_WIDTH); 
    BitmapField headerField=new BitmapField(Bitmap.getBitmapResource("bb_images.png")); 
    header.add(headerField); 
    mainManager.add(header); 

    TableLayoutManager outerTable=new TableLayoutManager(new int[]{ 
    TableLayoutManager.USE_PREFERRED_SIZE},TableLayoutManager.USE_ALL_WIDTH); 
    for(int a=0;a<2;a++){ 

     TableLayoutManager innerTable = new TableLayoutManager(new int[]{ 
      TableLayoutManager.USE_PREFERRED_SIZE, 
      TableLayoutManager.USE_PREFERRED_SIZE, 
      TableLayoutManager.USE_PREFERRED_SIZE 
      }, TableLayoutManager.USE_ALL_WIDTH) { 

      // overriding the paint method 
      public void paint(Graphics graphics){ 
       Bitmap bgBitmap=Bitmap.getBitmapResource("bd_gray.png"); 
       graphics.drawBitmap(0, 0, bgBitmap.getWidth(),bgBitmap.getHeight(), bgBitmap,0,0); 
       super.paint(graphics);      
      }// end og the paint ,methos        
     }; 

     innerTable.setPadding(01, 0, 01, 0); 

     LabelField companyTitleField=new LabelField(" IT SOLUTION"){ 
      public void paint(Graphics graphics){      
       graphics.setColor(Color.WHITE); 
       super.paint(graphics); 
      }    
     }; 

     LabelField viewDetailButton=new LabelField("View Detail"); 
     //viewDetailButton.setFont(new Font()); 

     LabelField featuresField=new LabelField("Featured"){ 
      public void paint(Graphics graphics){ 
       graphics.setColor(Color.WHITE); 
       super.paint(graphics);      
      }    
     }; 

     FontFamily fontFamily[] = FontFamily.getFontFamilies(); 
     Font font = fontFamily[1].getFont(FontFamily.CBTF_FONT, 15); 
     viewDetailButton.setFont(font); 
     final Bitmap callBitmap=Bitmap.getBitmapResource("call_image.png");      

     //BitmapField contactButton=new BitmapField(callBitmap,Field.FOCUSABLE); 
     HorizontalFieldManager callAddManager=new  HorizontalFieldManager(Manager.USE_ALL_WIDTH); 

     BitmapButtonField contactButton=new BitmapButtonField(callBitmap,callBitmap); 
     contactButton.setChangeListener(this); 

     contactButton.setLabel("Call"); 
     contactButton.setFont(font);    

     //contactButton.layout(50, 30); 
     /* 
     final Bitmap contactBitmap=Bitmap.getBitmapResource("add_contact.png"); 
     BitmapField addContact=new BitmapField(contactBitmap,Field.FOCUSABLE){ 


      protected void layout(int width, int height) { 
       setExtent(contactBitmap.getWidth()+10, contactBitmap.getHeight()+10); 
     } }; 

     */ 


     final Bitmap contactBitmap=Bitmap.getBitmapResource("add_contact.png"); 
     /* 
     BitmapField addContact=new BitmapField(contactBitmap,Field.FOCUSABLE){ 


      protected void layout(int width, int height) { 
       setExtent(contactBitmap.getWidth()+10, contactBitmap.getHeight()+10); 
      } 

     }; 
     */ 

     BitmapButtonField addContactField=new BitmapButtonField(contactBitmap,contactBitmap); 

     addContactField.setFont(font); 

     innerTable.add(companyTitleField); 
     innerTable.add(new LabelField()); 

     innerTable.add(viewDetailButton); 
     innerTable.add(featuresField); 

     callAddManager.add(contactButton); 
     callAddManager.add(addContactField); 
     innerTable.add(callAddManager); 
     outerTable.add(innerTable); 
    }   

    mainManager.add(outerTable); 
    add(mainManager);     
}// end of the addDetailListing 

回答

1

您指的是細節Field作爲按鈕,但這是你如何實現它:

LabelField viewDetailButton=new LabelField("View Detail"); 

它實際上不是一個真正的按鈕,但LabelField。我相信LabelField對象默認爲are not focusable。你可以讓他們可聚焦,通過做這樣的事情:

LabelField viewDetailButton=new LabelField("View Detail", Field.FOCUSABLE); 

您可能需要重寫paint()onFocus()在匿名LabelField類自定義您的viewDetailButton聚焦時的樣子,雖然。