2011-09-05 56 views
0

我对编程Blackberry颇为陌生,想知道是否有人知道关于如何将图像加载到屏幕并设置onClick监听器的教程或代码片段?如何将图像转换为黑莓并设置onClick侦听器?

编辑,走到这一步:

ButtonField btf1 = new ButtonField("Fine!"); 
ButtonField btf2 = new ButtonField("Great!"); 
RichTextField rtf = new RichTextField("HELLO, HOW ARE YOU?"); 

Bitmap LOGO = Bitmap.getBitmapResource("1.png"); 
BitmapField LogoBmpField = new BitmapField(LOGO); 

HelloWorldScreen() 
{   
    setTitle("My First App"); 
    add(rtf); 
    add(btf1); 
    add(btf2); 
    add(LogoBmpField); 
} 

谢谢!

编辑:顺便说一句,接口应该如何制作黑莓手机?只需

ButtonField btf1 = new ButtonField("Fine!"); 
add(btf1); 

还是有一些可见的方式,如XML的Android?

还有一件事,我如何改变或设置一些对象的属性。假设我想更改我的button-btf1的标题(期望可用属性列表出现)不会给任何东西。

回答

2

将你的图片放在你的res文件夹中,试试这个;

Bitmap bmpLogo = Bitmap.getBitmapResource("yourImage.jpg"); 
BitmapField logo = new BitmapField(bmpLogo){ 
    protected boolean trackwheelClick(int status, int time) 
    { 
     // Your onclick code here 
     return true; 
    } 
}; 
add(logo); 
+0

谢谢!不适用于BitmapField,但适用于ButtonField。 :) – Roger

+0

请参阅上面的修改。 – Roger

+0

哦,看起来像BitmapField不是trackwheelClick,onscreenClick方法有什么样吗? – Roger

1

1)您需要使BitmapField为可重点。

我只是尝试这样做:

BitmapField LogoBmpField = new BitmapField(LOGO, BitmapField.FOCUSABLE) { 
     protected boolean trackwheelClick(int status, int time) { 
      System.out.println(" -- You clicked me! "); 
      return true; 
     } 
    }; 

,它似乎工作。

2),并改变你的按钮上的文本使用 setLabel()

btf1.setLabel("new button text"); 
+0

看起来很有针对性的风格! – gkane

-2
public class MyScreen extends MainScreen { 

    public LanguageSelector() { 

     Bitmap logoBitmap = Bitmap.getBitmapResource("normalarabflag.png"); 
     BitmapField LogoBmpField = new BitmapField(logoBitmap, BitmapField.FOCUSABLE | Field.FIELD_HCENTER) { 
      protected boolean navigationClick(int status, int time) { 
       System.out.println(" -- You clicked me! "); 
       UiApplication.getUiApplication().pushScreen(new SecoundScreen()); 
       Dialog.alert("Load Complete"); 
       return true; 
      } 
     }; 

     LabelField labelfield = new LabelField("Arabic ",Field.FIELD_HCENTER|LabelField.FOCUSABLE); 

     VerticalFieldManager vrt=new VerticalFieldManager(USE_ALL_WIDTH) { 

      protected void sublayout(int maxWidth, int maxHeight) { 

       super.sublayout(Display.getWidth(),Display.getHeight()); 
       setExtent(Display.getWidth(),Display.getHeight()); 

      } 
     }; 

     Font f=labelfield.getFont(); 
     int hight1=f.getAdvance(labelfield.getText()); 
     int k=labelfield.getPreferredHeight(); 

     int number=hight1/Display.getWidth()+1; 
     int hight2=logoBitmap.getHeight(); 
     int padding=(Display.getHeight()-((number*k)+hight2))/2; 

     if(padding>0) { 
      LogoBmpField.setPadding(padding,0,0,0); 
     } 

     vrt.add(LogoBmpField); 
     vrt.add(labelfield); 

     add(vrt); 
    }  
} 
+0

仅发布相关部分来回答问题。 –

+0

代码似乎不是非常清楚或非常深思熟虑。它也显示了对BlackBerry UI并发症的一点理解,在生产程序中使用此代码时我会小心谨慎。 –