【问题标题】:Blackberry grid layout customizations黑莓网格布局自定义
【发布时间】:2012-05-05 20:14:06
【问题描述】:

如何在黑莓的网格管理器布局中为网格元素添加边距。我希望它看起来与在 sqlite 表上的外观完全相同,行和列的边距整齐。我还想为每一行添加颜色网格。网格中的元素是从sqlite表中逐个字符串获取的。

我有以下代码:

GridFieldManager grid = new GridFieldManager(10,5,0); 

grid.add(new LabelField("Date"));
grid.add(new LabelField("Bill"));
grid.add(new LabelField("Receipt"));
grid.add(new LabelField("Narration"));
grid.add(new LabelField("ID"));

grid.setColumnPadding(15);
grid.setRowPadding(20);

for (int i = 1; i < grid.getRowCount(); i++) {
  System.out.println("Inside for first loops");
  for (int j = 0; j < grid.getColumnCount() ; j++) {
    System.out.println("Inside for second loops");

    while(c.next()) {                                          
      System.out.println("Inside while"); 
      Row r;
      r = c.getRow();

      for (int k = 4; k >=0; k--) {           
        System.out.println("Inside for loops");

        if(k==0 || k==3) {
          System.out.println("Retrieving date or narration");
          grid.insert(new LabelField(r.getString(k)) {
            public void paint(Graphics graphics) {
              graphics.setColor(Color.BROWN);
              super.paint(graphics);
            }
          },i,j);
        } else {
          System.out.println("Retrieving other values"); 
          String p = "" + r.getInteger(k);
          grid.insert(new LabelField(p) {
            public void paint(Graphics graphics) {
              graphics.setColor(Color.BROWN);
              super.paint(graphics);
            }
          },i,j);
        }   
        grid.setBackground(
          BackgroundFactory.createLinearGradientBackground(
            Color.GOLD,Color.CHOCOLATE,Color.GOLDENROD,Color.CORAL));
      } 
      System.out.println("Exiting while");                        
    }

    System.out.println("Exiting sec for");
    break;
  }
  System.out.println("Exiting first for");
  break;
} 

通过上面的代码,我将线性渐变背景颜色应用于整个屏幕。除了标题之外的网格元素也是棕色的。

我现在想要实现的是每行使用不同的颜色。 任何知道此解决方案的人请分享。谢谢。

【问题讨论】:

    标签: sqlite blackberry gridview user-interface blackberry-jde


    【解决方案1】:

    要为获取的行添加颜色,您可以使用以下代码:

      for (int k = 4; k >=0; k--)
                                            {
    
                                                System.out.println("Inside for loops");
                                                //Check for whether column retrieved is date or naraation
                                                if(k==0 || k==3)
                                                {
                                                    System.out.println("Retrieving date or narration");
                                                    grid.insert(new LabelField(r.getString(k))
                                                    {
                                                        public void paint(Graphics graphics)
                                                        {
                                                        graphics.setColor(Color.GOLD);
                                                        super.paint(graphics);
                                                        }
                                                     },i,j);
    
    
                                                }  
                                                else
                                                {   
                                                    //Check for whether column retrieved is bills,rec or id
                                                    System.out.println("Retrieving other values"); 
                                                    String p = "" + r.getObject(k);
    
                                                    //if(r.getString(k) != null)
                                                    //{ 
                                                    grid.insert(new LabelField(p)
                                                    {
                                                        public void paint(Graphics graphics)
                                                        {
                                                        graphics.setColor(Color.GOLD);
                                                        super.paint(graphics);
                                                        }
                                                     },i,j); 
                                                   //  } 
    
    
                                                }   
    

    以 if else 方式使用它可能会对您的解决方案有所帮助。

    【讨论】:

    • 是的,我已经用 r.object fetch 试过了。它非常适合行。谢谢!
    【解决方案2】:

    颜色部分可以通过两种方式实现:

    1. 覆盖网格管理器paint 方法(困难)
    2. 为每个单元格添加一个自定义VerticalFieldManager,其中只包含一个标签字段,而不是直接添加标签字段。这是最简单的方法恕我直言。

    【讨论】:

      猜你喜欢
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      • 1970-01-01
      • 2012-12-11
      • 1970-01-01
      • 2014-11-02
      • 1970-01-01
      相关资源
      最近更新 更多