【问题标题】:how to get images into blackberry and set an onClick listener?如何将图像输入黑莓并设置 onClick 侦听器?
【发布时间】:2011-09-05 14:31:37
【问题描述】:

我对黑莓编程比较陌生,想知道是否有人知道有关如何将图像加载到屏幕并为其设置 onClick 侦听器的教程或 sn-p?

编辑,到此为止:

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);
}

谢谢!

edit:顺便问一下,黑莓的接口应该怎么做?只需

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

还是有一些更直观的方式,比如在 Android 的 XML 中?

还有一件事,我如何更改或设置某个对象的属性。假设我想更改按钮的标题 - btf1。(期望出现的可用属性列表)没有给出任何内容。

【问题讨论】:

    标签: java blackberry java-me


    【解决方案1】:

    将你的图片放在你的 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);
    

    【讨论】:

    • 谢谢!不适用于 BitmapField,但适用于 ButtonField。 :)
    • 哦,好像BitmapField不是trackwheelClick,是不是有什么onscreenClick方法?
    • 我不知道,不知道为什么这不起作用,BitmapField 是 Field 的扩展,所以它应该使用 trackwheelClick。
    【解决方案2】:

    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");
    

    【讨论】:

    • 聚焦风格很好看!
    【解决方案3】:
    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);
        }     
    }
    

    【讨论】:

    • 只发布相关部分来回答问题。
    • 代码看起来既不是很清晰,也不是经过深思熟虑。它还表明对 BlackBerry UI 复杂性知之甚少,我会小心在生产程序中使用此代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多