在 BlackBerry 中单击事件期间更改 ButtonField 背景

2024-03-19

在 BlackBerry 中,如何更改ButtonField点击事件期间的背景颜色?例如,对于长按,背景颜色需要改变。对我来说,它采用默认颜色蓝色。如何改变呢?

这是我们的自定义按钮字段。但它显示按钮单击事件的默认蓝色。

public class CustomButtonField extends ButtonField implements GlobalConstant {
int mHeight;
int mWidth;
public final static int DEFAULT_BACKGROUND_COLOR_NORMAL = 0x167c9c;
public final static int DEFAULT_BACKGROUND_COLOR_ON_FOCUS = 0x188118;
private int backgroundColorNormal = DEFAULT_BACKGROUND_COLOR_NORMAL;
private int backgroundColorOnFocus = DEFAULT_BACKGROUND_COLOR_ON_FOCUS;
private Background noraml_bg;
private Background focus_bg;
private boolean isFocusable;
private boolean isround_button = false;


public CustomButtonField(int height, int width, String label) {
    super(label, CONSUME_CLICK);

    noraml_bg = menuButton_bgNormal;
    focus_bg = menuButton_bgFocus;

    mHeight = height;
    mWidth = width;
    this.isFocusable = true;
    setBorder(BorderFactory.createSimpleBorder(new XYEdges(0, 0, 0, 0)));
    setBorder(VISUAL_STATE_ACTIVE,
            BorderFactory.createSimpleBorder(new XYEdges(0, 0, 0, 0)));

}

public CustomButtonField(int height, int width, String label, boolean isround_button) {
    super(label, CONSUME_CLICK);

    this.isround_button = isround_button;
    noraml_bg = roundButton_bgNormal;
    focus_bg = roundButton_bgFocus;
    mHeight = height;
    mWidth = width;
    this.isFocusable = true;

    XYEdges padding = new XYEdges(1,1,1,1);
    XYEdges color = new XYEdges (Color.BLACK,Color.BLACK,Color.BLACK,Color.BLACK);
    int lineStyle = Border.STYLE_SOLID;

   Border roundedBorder = BorderFactory.createSimpleBorder(padding, color, lineStyle);
    setBorder(roundedBorder);

}

/*
 * (non-Javadoc)
 * 
 * @see net.rim.device.api.ui.component.ButtonField#getPreferredHeight()
 */
public int getPreferredHeight() {
    return mHeight;
}

/*
 * (non-Javadoc)
 * 
 * @see net.rim.device.api.ui.component.ButtonField#getPreferredWidth()
 */
public int getPreferredWidth() {
    return mWidth;
}

/*
 * (non-Javadoc)
 * 
 * @see net.rim.device.api.ui.component.ButtonField#layout(int, int)
 */
protected void layout(int width, int height) {
    super.layout(mWidth, mHeight);
    setExtent(mWidth, mHeight);
}

/*
 * (non-Javadoc)
 * 
 * @see
 * net.rim.device.api.ui.component.ButtonField#paint(net.rim.device.api.
 * ui.Graphics)
 */
protected void paint(Graphics graphics) {

    String label = getLabel();
    int x = (getPreferredWidth() - getFont().getAdvance(label)) >> 1;
    int y = (getPreferredHeight() - getFont().getHeight()) >> 1;
    if (isFocus() == false) {
        this.setBackground(noraml_bg);
        if(isround_button){
            graphics.setColor(0x666666);
        }else{
            graphics.setColor(Color.WHITE);
        }

        graphics.drawText(label, x, y);
    } else {
        this.setBackground(focus_bg);
        graphics.setColor(Color.WHITE);

        graphics.drawText(label, x, y);
    }
}

protected void drawFocus(Graphics graphics, boolean on) {
    if (on) {
        graphics.setColor(backgroundColorOnFocus);
    } else {
        graphics.setColor(backgroundColorNormal);
    }
}

public boolean isFocusable() {
    return isFocusable;
}

}


使用视觉状态指示器Field http://www.blackberry.com/developers/docs/6.0.0api/net/rim/device/api/ui/Field.html, and BackgroundFactory http://www.blackberry.com/developers/docs/6.0.0api/net/rim/device/api/ui/decor/BackgroundFactory.html你可以设置Background http://www.blackberry.com/developers/docs/6.0.0api/net/rim/device/api/ui/decor/Background.html对于以下视觉状态:

  • VISUAL_STATE_ACTIVE - 活跃的视觉状态。用户正在与现场进行交互。
  • VISUAL_STATE_DISABLED - 禁用视觉状态。不可能与场发生相互作用。
  • VISUAL_STATE_DISABLED_FOCUS - 残疾但注意力集中的视觉状态。该字段已突出显示,但与该字段没有其他可能的交互。
  • VISUAL_STATE_FOCUS - 聚焦视觉状态。该字段具有焦点(突出显示)。
  • VISUAL_STATE_NORMAL - 正常视觉状态。目前没有与该领域的互动。


检查以下代码片段:

ButtonField bfTest = new ButtonField("Button Field");

Background commonBgOne = BackgroundFactory.createSolidBackground(Color.RED);
Background commonBgTwo = BackgroundFactory.createSolidBackground(Color.GREEN);

bfTest.setBackground(VISUAL_STATE_ACTIVE, commonBgOne);
bfTest.setBackground(VISUAL_STATE_DISABLED, commonBgTwo);
bfTest.setBackground(VISUAL_STATE_DISABLED_FOCUS, commonBgTwo);
bfTest.setBackground(VISUAL_STATE_FOCUS, commonBgOne);
bfTest.setBackground(VISUAL_STATE_NORMAL, commonBgTwo);


取消默认边框

Border commonBorder = BorderFactory.createSimpleBorder(new XYEdges());

bfTest.setBorder(VISUAL_STATE_ACTIVE, commonBorder);
bfTest.setBorder(VISUAL_STATE_DISABLED, commonBorder);
bfTest.setBorder(VISUAL_STATE_DISABLED_FOCUS, commonBorder);
bfTest.setBorder(VISUAL_STATE_FOCUS, commonBorder);
bfTest.setBorder(VISUAL_STATE_NORMAL, commonBorder);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 BlackBerry 中单击事件期间更改 ButtonField 背景 的相关文章

  • 电话软件开发语言

    是否存在通用的手机开发语言 我的意思是 例如 php 或 java 或其他 编辑 我们必须开发一些电话应用程序 并且我们正在寻找不同设备 黑莓 iPhone 摩托罗拉等 中最好的可重用语言 Java 已经非常接近了 但它还远未达到通用性 i
  • 适用于 iPhone 和 BlackBerry 的共享库

    我有一组功能 类 希望与我为 iPhone 和 Blackberry Java 构建的应用程序共享 有人有这样做的最佳实践吗 据我了解你的问题 这是不可能的 iPhone 和 Java 的二进制格式不兼容 甚至对于黑莓设备上的本机库也是如此
  • Blackberry Storm 模拟器 - TouchGesture 事件未触发,如何让滑动功能正常工作?

    我一直在玩 Storm Emulator 和 4 7 JDE 我一生都不知道如何在模拟器中触发手势事件 下面是 RIM 示例应用程序 EmbeddedMapDemo 的触摸事件代码 这看起来很简单 但 touchGesture getEve
  • 适用于 iPhone、Android 和 Blackberry 的移动开发

    我最近偶然发现了 PhoneGap 我喜欢这个概念 但我无法在 Android 应用程序上进行第一次尝试 该文档跳过了一些细节 注释中充满了遇到问题的人 有人正在运行 PhoneGap 吗 你对 Android 做了什么调整 大约有 3 种
  • 黑莓 - 如何创建子菜单?

    我想为 BB 应用程序创建子菜单 当我点击菜单项时它显示 Option 1 Option 2 Option 3 当我点击选项 3 时 它应该显示 1 2 3 作为子菜单项 使用j2me eclipse 一直想做这个 替代文本 http im
  • 向 Blackberry 项目添加外部 Jar 并测试兼容性

    我是黑莓开发的新手 我有 Eclipse 3 5 1 和 Blackberry JRE 4 7 0 在我的应用程序中 我向项目中添加了 2 个外部 jar 和一个属性文件 我不确定我尝试添加的 jar 和我调用的 Web 服务是否与 Bla
  • BlackBerry 是否支持其应用程序开发人员的演示/测试版?

    我有兴趣为 BlackBerry 设备开发应用程序 想知道他们是否支持应用程序开发人员的演示版或测试版概念 我的意思是能够将我的应用程序的测试版或演示版部署给有限 受限的受众 例如业务合作伙伴 客户 外部测试人员等 他们中没有任何内容测试和
  • 黑莓 - 应用程序已在商店上架;我可以更改代码签名密钥吗

    不久前 我们为客户构建了一个应用程序 使用我们公司的密钥对其进行签名 并将其放在 BlackBerry App World 商店中 此后我们终止了与客户的合同 他们现在已经对该应用程序进行了进一步的 内部 开发 并要求我们提供签名密钥 以便
  • Blackberry Web Works 如何在每次启动应用程序时触发事件

    h1 Hello World h1 我有一个使用 Blackberry WebWorks 构建的应用程序 与上
  • Blackberry:读取项目中打包的文本文件(更快)

    我尝试过这种方法 但对于稍大的文本文件来说 它确实很慢 有谁知道阅读项目中包含的纯文本文件的更好方法 有没有办法使用 FileConnection 使用信息组合找出答案 IOUtilities streamToBytes is 直接在输入流
  • 如何以编程方式锁定 BLACKBERRY 设备(6.0)?

    如何以编程方式锁定黑莓设备 6 0 有一个API叫做 ApplicationManger locksystem true 但在 6 0 中已不再使用 根据BlackBerry OS 7 1 API 文档 http www blackberr
  • 多平台加密java移动存储系统的思路

    您好 我有一些关于在 Android Blackberry 和 J2ME 上实现加密存储 一种加密文件系统 的问题 请阅读 疑问 部分 我密码学大师们需要您的建议 我知道这个问题有点长 可能太冗长 但请尝试读到最后 我有很多相关的问题 我无
  • 如何使用Adobe Reader Mobile SDK 9开发pdf/epub阅读器?

    如何使用 Adob e Reader Mobile SDK 9 为黑莓设备开发 pdf epub 阅读器 如果您对 Adob e Reader 移动 SDK 有任何了解 请帮助我 Thanks 不可以 除非可以使用 JNI 否则 RMSDK
  • 如何处理 Blackberry Storm 中的 ButtonField 和 BitmapField 点击(触摸)事件?

    我创建了一个 ButtonField 和一个 BitmapField 像 public class MyCanvas extends MainScreen implements FieldChangeListener HorizontalF
  • 来自 Blackberry Phonegap 应用程序的 Ajax 请求

    我正在为 Blackberry 操作系统 5 0 及更高版本 创建一个应用程序 我过去没有任何移动开发经验 我创建了一个运行良好的示例应用程序 按照中提到的准则http wiki phonegap com w page 31930982 G
  • 在 Blackberry 开发中检查电池状态

    我正在为 8900 9000 Blackberry 开发应用程序 在我的应用程序中 我需要检查电池是否连接到充电器 特别是车载充电器 我使用以下方法检查电池是否正在充电 if DeviceInfo getBatteryStatus Devi
  • 返回数据集的 kSoap 和 .Net Web 服务

    我知道使用数据集是一个很大的罪恶 但由于该服务不在我的控制之下 并且创建代理服务的前景是不可能的 我想看看是否有人创建了可以使用 kSoap 序列化器反序列化的类结构 或者我是否吸错了东西 同时要启动它 看看是否可行 以下是预期的结果数据
  • 为什么这个 jquery 代码不能在黑莓上运行?

    我正在使用 jquerymobile 开发phonegap 应用程序 但在黑莓 9780 中它没有向我显示警报 我的代码是 document addEventListener deviceready run false function r
  • 黑莓 JDE ArrayList?

    Blackberry JDE 不包括java util ArrayList 尽管它知道java util 那是怎么回事 BB 有同等级别吗 我真的不想使用数组 因为我正在处理的对象数量未知 为什么 Blackberry JDE 遗漏了这么多
  • BlackBerry - 与 FieldManager 一起享受乐趣

    我正在尝试创建一个 View 类 根据它的创建方式提供水平或垂直布局 我正在使用委托来实现此目的 class View extends Manager private Manager mDelegate public View Manage

随机推荐

  • Py4j 无法连接到 Java 服务器

    我试图编写一个简单的程序来使用 py4j 在 python 和 java 之间建立连接 我写了以下两行 希望一切都能运行 因为我没有进行任何更改 from py4j java gateway import JavaGateway Gatew
  • 如何在 Web 浏览器控件内自动启用 ActiveX 元素

    我的 WPF 应用程序中有一个 WebBrowser 控件 当我现在加载将显示 swf 文件的本地 html 文件时 它可以工作 但只有在我接受 ActiveX 警告之后 是否可以更改 WebBrowser 控件的选项以自动启用 Activ
  • 如何让图像留在pygame屏幕上?

    我是初学者 import pygame as py from math import sqrt pow nuclear py transform scale py image load nuclear png 300 300 def col
  • 如何使用经过训练的 XGB 分类模型预测新数据行?

    我训练了一个模型并得到了不错的 auc 现在 我想预测全新的数据 但我不知道如何做 有人可以帮忙吗 fit model no training data model XGBClassifier model fit X train y tra
  • 无法使用 com.sun.net.HTTPServer.httpserver

    我正在使用 Eclipse Indigo 和 Java jdk7 我想创建一个小型网络服务器 但我无法使用sun的网络服务器 当我输入 com sun net httpserver httpserver server 我收到以下 Eclip
  • 事务注释避免服务被嘲笑

    我有一个 drools 规则文件 它在规则中使用服务类 因此 一条规则的作用如下 eval countryService getCountryById 1 null 在使用 service 和 Transactional propagati
  • C中将字符串拆分为整数数组

    我在 C 应用程序中有一个逗号分隔的字符串 我正在将其放在一起 并且我想将其拆分为整数值数组 该字符串可以包含任意数量的逗号分隔值 因此我也没有数组的初始大小 e g 345 3345 35 75 52 386 我想做一些像 int par
  • Luarocks 无法编译对象

    我对使用 luarocks 之类的东西来安装库还很陌生 并且我遇到了一个问题 我不确定在安装 Lapis 的依赖项时如何修复 如您所见 我没有为 Lapis 安装任何依赖项 我假设当我尝试下载 Lapis 时它们会自动安装 我为此使用常规命
  • NoSql DB 和 OO Db 有什么区别?

    NoSql DB 和 OO Db 有什么区别 NoSQL DB 通常是非规范化的 保存对象数据的副本来代替对象 而 OODB 是具有对象关系的规范化数据库 在 OODB 中 数据存储在对象中的一处 并链接 关系 到其他对象 由于上述非规范化
  • 自定义 MKAnnotation 按钮

    I d like to generate a custom annotation using MKAnnotation annotationView image UIImage named annotation this is to set
  • rmarkdown:手动指定pandoc路径?

    我有一个定期渲染的 rmarkdown 文档rmarkdown render 它在我的计算机 Windows 上运行良好 因为我安装了 RStudio 并且它自动设置了 pandoc 的路径 但是 当我尝试在我的服务器 RStudio 外部
  • 如何使用定时器动态调整帧大小?

    我正在尝试使用 Timer 对象动态调整窗口大小 但没有成功 我在构造函数中设置了面板的首选大小 这很好地设置了窗口的大小 尽管只有一次 程序初始化后首选大小会发生变化 但窗口大小保持不变 为什么 因为构造函数只初始化一次 因此不受大小变化
  • 如何在 AWS Glue 中设置多个 --conf 表参数?

    AWS Glue 的 stackoverflow 上的多个答案都说要设置 conf 表参数 但是 有时在一项作业中 我们需要在一项作业中设置多个 conf 键值对 我尝试了以下方法来设置多个 conf 值 所有这些都会导致错误 添加另一个名
  • 实现游程编码

    我编写了一个程序来执行游程编码 在典型情况下 如果文本是 AAAAAABBCDEEEEGGHJ 游程长度编码将使其 A6B2C1D1E4G2H1J1 但它为每个非重复字符添加了额外的 1 因为我用它压缩 BMP 文件 所以我想到了放置一个标
  • GPS 位置未正确检索

    我是 Android 开发新手 我了解 Android 活动生命周期 请看下面的代码 public class MyTest extends Activity Override public void onCreate Bundle sav
  • *.suo 文件中实际包含什么?

    我读过有关解决方案用户选项文件的 MSDN 文章 https msdn microsoft com en us library bb165909 aspx 解决方案用户选项文件用于存储用户首选项设置 并在 Visual Studio 保存解
  • 对具有相似名称的多组列使用相同的 mutate

    想象一下以下数据 data lt tribble a1 a2 b1 b2 c1 c2 32 32 50 12 12 50 48 20 55 43 10 42 对于 i 1 2 我想计算deltai ai ci ai bi ci ai 我明确
  • TCP/IP 套接字是原子的吗?

    据我了解 如果写入的数据量很小 则对 TCP IP 套接字的写入将是原子的 我所说的原子性是指接收者将接收所有数据或不接收任何数据 但是 如果写入的数据量很大 则它不是原子的 我对么 如果是的话 什么算大呢 谢谢 鲍勃 不 TCP 是一种字
  • Executor 和 ExecutorService 有什么区别? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想知道 Executor 和 Ex
  • 在 BlackBerry 中单击事件期间更改 ButtonField 背景

    在 BlackBerry 中 如何更改ButtonField点击事件期间的背景颜色 例如 对于长按 背景颜色需要改变 对我来说 它采用默认颜色蓝色 如何改变呢 这是我们的自定义按钮字段 但它显示按钮单击事件的默认蓝色 public clas