blackberry - 自定义 Blackberry Treefield

标签 blackberry treeview customization

我想自定义出现在树 View 左侧的 (+) 符号
是否可以
我想在那个地方放置图像

我尝试自定义和搜索论坛以及黑莓论坛,其中一个说这是不可能的,但后来
我得到了一个链接,如下所示,这是可能的

http://supportforums.blackberry.com/t5/Java-Development/Custom-TreeField/td-p/354901

HardwareDevice 类似乎丢失的地方

任何人都可以使用链接或他们自己的任何其他答案来解释这个概念
请建议?

最佳答案

[ 更新 ] 如果你想 自定义 TreeField 每一行的 (+)-sign 和其他属性,而不是编写自己的树字段 那么你可以尝试重写 drawTreeItemTreeFieldCallback 方法以下:

import net.rim.device.api.system.Bitmap;
import net.rim.device.api.system.Display;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.component.TreeField;
import net.rim.device.api.ui.component.TreeFieldCallback;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;

public class TreeDemo extends MainScreen {
    int parent[] = {1,2,3,4,5,6,7,8,9};
    int child[][] = new int [10][10];
    int child_child[][][] = new int [10][10][10];

    int rowHeight = 27;

    CustomTreeFieldCallback treeCallback = new CustomTreeFieldCallback();
    VerticalFieldManager vm = new VerticalFieldManager(Field.FOCUSABLE | VERTICAL_SCROLL | VERTICAL_SCROLLBAR);
    TreeField myTree = new TreeField(treeCallback, Field.FOCUSABLE);

    public TreeDemo() {
        vm.add(new LabelField("Table:"));
        myTree.setRowHeight(rowHeight);
        myTree.setIndentWidth(15);
        myTree.setDefaultExpanded(false);
        for(int i = parent.length-1; i >= 0 ; i--) {
            parent[i] = myTree.addChildNode(0, "Parent_" + (i+1));
            child[i] = new int[4];
            for(int j = child[i].length-1; j >=0 ; j--) {
                child[i][j] = myTree.addChildNode(parent[i], "Child_"+ (i+1) + "_" + (j+1));
                child_child[i][j] = new int[3];
                for(int k = child_child[i][j].length-1; k >= 0 ; k--) {
                    child_child[i][j][k] = myTree.addChildNode(child[i][j], "Child_of_Child_"+ (i+1) + "_" + (j+1)+ "_" + (k+1));
                }
            }
        }
        vm.add(myTree);
        add(vm);
    }

    private class CustomTreeFieldCallback implements TreeFieldCallback {

        public void drawTreeItem(TreeField treeField, Graphics graphics, int node,
                int y, int width, int indent) {
            // TODO Auto-generated method stub
            String string = (String) treeField.getCookie(node);
            int preservedColor = graphics.getColor();

            if(treeField.getCurrentNode() == node) {
                graphics.setColor(0x0CCCC0);
            } else {
                graphics.setColor(0x404040);
            }
            graphics.fillRect(0, y, Display.getWidth(), treeField.getRowHeight());

            Bitmap iconImage;
            int iconImageWidth = 0;
            indent -= 20; // decrease the extra indentation for all nodes.
            if(treeField.getFirstChild(node) != -1){ // if the node is not a leaf node
                if(treeField.getExpanded(node)) {
                    iconImage = Bitmap.getBitmapResource("icon_arrow_down.png");
                    iconImageWidth = iconImage.getWidth();
                } else {
                    iconImage = Bitmap.getBitmapResource("icon_arrow_right.png");
                    iconImageWidth = iconImage.getWidth();
                }
                graphics.drawBitmap(indent, y, indent+iconImageWidth, treeField.getRowHeight(), iconImage, 0, 0);
            }

            if( treeField.getCurrentNode() == node ) {
                graphics.setColor(0x404040);            
            } else {
                graphics.setColor(0x0CCCC0);
            }
            graphics.drawText(string, indent+iconImageWidth, y);

            graphics.setColor(preservedColor);
        }

    }
}

关于blackberry - 自定义 Blackberry Treefield,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9992371/

相关文章:

java - 在 BlackBerry 上导入 Jar 文件时抛出 MissingNativeError

在模拟器上加载黑莓应用程序

.net - 如何在没有代码的情况下将 XML 绑定(bind)到 TreeView(MVVM,来自 XAML 的 dataContext)

wpf - 如何强制 ItemContainerGenerator 为项目生成容器或如何在启用 UI 虚拟化时将 TreeView 滚动到展开节点?

python - 使用 HTML 或 Textile 自定义 Python 单元测试报告

iphone - 我应该使用哪个威瑞信 SSL 证书?

适用于 OS 7.0 及更早版本的 Blackberry 应用程序,支持 blackberry 10

java - 如何通过代码初始化JavaFX fxml文件中定义的树形控件

user-interface - 有什么好的方法可以处理UI中的大量排列?

numpy - 如何使 set_printoptions(suppress=True) 永久化?