如何制作一个向用户显示图像而不是文本的下拉列表?
ObjectChoiceField 字段满足我的所有要求,但它并不漂亮。
这就是我所拥有的:
String pets[] = {"Dog", "Cat", "Duck" };
ObjectChoiceField dd = new ObjectChoiceField("My Pet",pets,0,ObjectChoiceField.FIELD_LEFT);
但我更喜欢在下拉列表中包含图片。我的理解是对象数组必须包含支持 toString 方法的对象。 必须有一种方法可以做到这一点,我在其他应用程序中看到它,我只是在 API 中找不到正确的对象。
它不必是 ObjectChoiceField。
The ObjectChoiceField field meets all my requirements but it is not pretty.
This is what I have:
String pets[] = {"Dog", "Cat", "Duck" };
ObjectChoiceField dd = new ObjectChoiceField("My Pet",pets,0,ObjectChoiceField.FIELD_LEFT);
But I would prefer to have pictures in the dropdown. My understanding is that the object array must contain objects that support the toString method.
There are got to be a way to do I see it in other apps, I just can't find the correct object in the API.
It doesn't have to be an ObjectChoiceField.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我会使用自定义 ButtonField 和 PopupScreen。两个原因:
替代文本 http://img405.imageshack.us/img405/3746/dropdown.jpg
DropDownItem:
自定义 ButtonField:
下拉控件本身:
使用示例:
I would use custom ButtonField and PopupScreen. Two reasons:
alt text http://img405.imageshack.us/img405/3746/dropdown.jpg
DropDownItem:
Custom ButtonField:
Dropdown control itself:
Sample of use:
我不熟悉黑莓开发,但我想你可以子类化
ObjectChoiceField
并覆盖layout(int, int)
和paint(Graphics)
方法。然后在
paint(Graphics)
中可以使用传入的Graphics对象的drawImage(...)
方法来绘制图像。只是一个疯狂的猜测
I'm not familiar with blackberry development but I guess you could subclass
ObjectChoiceField
and overwrite thelayout(int, int)
and thepaint(Graphics)
methods.And then in
paint(Graphics)
maybe use thedrawImage(...)
method of the passed in Graphics-object to draw the image.Just a wild guess
我的答案将类似于 抖动的响应。您想要的自定义类型的总体思路是覆盖基本组件的默认行为。
假设,您要显示的选项可以通过声明如下的名为
Choice
的类来封装:那么您可以声明一个
ObjectListField
实例为:将您选择的项目设置为:
然后将其添加到您的
Screen
(或FieldManager
我无法覆盖实际选择的弹出菜单项。这似乎调用了您选择的项目的
toString()
方法。这就是为什么我在Choice
类中重写了toString()
的默认实现,以便我们可以在该弹出窗口中显示逻辑名称。My answer will be along the lines of jitter's response. The general idea for the kind of customizations that you want is to override the default behavior of the basic components.
Suppose, the choices that you want to display can be encapsulated by a class named
Choice
declared as follows:then you can declare an
ObjectListField
instance as:set your choice items as:
and then add it to your
Screen
(orFieldManager
of your choice) using:I have not been able to override the actual selection pop-up menu items. This seems to call the
toString()
method of your choice items. That is why I have overriden the default implementation oftoString()
in theChoice
class so that we can display logical names in that pop-up.如果这是一个 java 小部件,那么您很可能可以传递简单的 html 作为要在选择字段中显示的项目(或者让 toString() 返回简单的 html)。
如果是这种情况,并且您传递了图像 URL/相对路径,则图像应该显示。
据我所知,至少可以在 Swing 中使用,例如...
“< html> Dog < img src="dog.png">< /html>”
(为代码添加空格以显示在预览中)
If this is a java widget then chances are you can pass simple html as items to display in the choice field (or have toString() return simple html).
Then if that's the case and you pass an image URL/relative path the image should display.
AFAIK that would work in Swing at least, e.g ...
"< html> Dog < img src="dog.png">< /html>"
(spaces added for the code to show up in preview)