Welcome to the official BlackBerry Support Community Forums.

This is your resource to discuss support topics with your peers, and learn from each other.

inside custom component

Java Development

Posts: 813
Registered: ‎05-29-2012
My Device: see later
My Carrier: see later


package mypackage;

import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.*;
import net.rim.device.api.system.*;
import net.rim.device.api.ui.component.table.*;

public class Tables   extends MainScreen
    private LabelField _focusLabel;
    private TableView theView; 
    public Tables() 
        //Initialize the TableModel, TableView and TableController.
        TableModel theModel = new TableModel();
        theView = new TableView(theModel);
        TableController theController = new TableController(theModel, theView, TableController.FIELD_FOCUS);
        //Initialize the DataTemplate.
        TestDataTemplate theTemplate = new TestDataTemplate(theView, 1, 1);
        theTemplate.createRegion(new XYRect(0,0,1,1));
        theTemplate.setRowProperties(0, new TemplateRowProperties(Display.getWidth()));
        theTemplate.setColumnProperties(0, new TemplateColumnProperties(80));
        //Add the Strings to the table.
        theModel.addRow(new String[]{"the"});
        theModel.addRow(new String[]{"jumps"});
        theModel.addRow(new String[]{"dog"});
        //Add the table to the screen.

        //Initialize and add the focus LabelField to the screen.
        _focusLabel = new LabelField("");
        //Push the screen onto the display stack.

    //A Runnable that displays the label of the Button that was pressed.
    public class ShowIndexRunnable implements Runnable 
        public void run() 
            String focus = "Field with Focus: " + ((ButtonField)theView.getLeafFieldWithFocus()).getLabel();

    //Custom DataTemplate that creates a ButtonField for every String added to the TableModel.
    public class TestDataTemplate extends DataTemplate 
        public TestDataTemplate(DataView view, int rows, int columns) 
            super(view, rows, columns);
        public Field[] getDataFields(int modelRowIndex) 
            TableModel theModel = (TableModel) getView().getModel();
            //Get the data for the row.
            Object[] data = (Object[]) theModel.getRow(modelRowIndex);
            //Create a array to hold all fields.
            Field[] theDataFields = new Field[data.length];
            //Create a ButtonField with each String and set its Runnable to the ShowIndexRunnable class.
          //  for(int i=0; i < data.length; i++) 
           // {
                theDataFields[0] = new ButtonField((String) data[0], Field.USE_ALL_WIDTH | 
                		DrawStyle.ELLIPSIS | Field.FOCUSABLE | ButtonField.CONSUME_CLICK);
                ((ButtonField)theDataFields[0]).setRunnable(new ShowIndexRunnable());
           // }

            return theDataFields;



I want to do it, one row with one column.However, onyl the first row with "the" button appears. whats the error?