1

以下のコードからわかるように、私はTableLayoutManagerを使用しています今問題はこれです私は詳細ボタンにフォーカスを当てることができません.コールボタンにしかフォーカスを当てることができません.Blackberry 9650シミュレータを使用している場合はボタンに触れることができますが、実際には非常に奇妙で、ボタンにフォーカスを当てることができません。助けてください

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
4

1 に答える 1

1

詳細 Fieldbuttonとして参照していますが、これが実装方法です。

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

実際には真のボタンではありませんが、LabelField. LabelFieldデフォルトでは、オブジェクトは focusable ではないと思います。次のようにして、それらをフォーカス可能にすることができます。

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

ただし、フォーカスされたときの外観をカスタマイズするには、匿名クラスでオーバーライドpaint()する必要がある場合があります。onFocus()LabelFieldviewDetailButton

于 2012-09-11T10:56:44.473 に答える