Настройка макета сетки Blackberry

Как добавить поля к элементам сетки в макете менеджера сетки Blackberry. Я хочу, чтобы он выглядел точно так же, как он выглядит в таблице 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;
} 

С помощью приведенного выше кода я получаю цвет фона с линейным градиентом, применяемый ко всему экрану. Также элементы сетки, за исключением заголовков, окрашены в коричневый цвет.

Теперь я хочу добиться отдельных цветов для каждой строки. Кто знает решение этой проблемы, поделитесь. Спасибо.


person learning_fly    schedule 05.05.2012    source источник


Ответы (2)


Чтобы добавить цвет к выбранным строкам, вы можете использовать этот код:

  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 способе может помочь вашему решению.

person bbDiva    schedule 14.05.2012
comment
Да, я пробовал это с этим r.object fetch. Он идеально подходит для строк. Спасибо! - person learning_fly; 14.05.2012

Вы можете добиться цветной части двумя способами:

  1. Переопределить метод диспетчера сетки paint (сложно)
  2. Добавьте пользовательское VerticalFieldManager, содержащее ровно одно поле метки в каждую ячейку, вместо того, чтобы добавлять поле метки напрямую. ИМХО это самый простой способ.
person Mister Smith    schedule 07.05.2012