2011-08-18 47 views
0

我已經創建了我的黑莓應用程序GridFieldManager,我想設置一個邊界的每個細胞,使電網看起來像一個Excel網格。黑莓GridFieldManager邊境

我使用:

gridFieldManager.setBorder(BorderFactory.createSimpleBorder(新XYEdges(0,0,0,0),Border.STYLE_DASHED));

但是這只是設置邊界周圍的經理,而不是每個單元格。

感謝您的幫助。

回答

2

只是設置邊框的每個Field添加到GridFieldManager

創建第一邊框添加集到正在添加到管理器Field的方法,然後將它傳遞給加()。或從GridFieldManager子類並覆蓋add(Field f)邊境設置爲正在添加一個Fieldf),然後調用super.add(f)

0

我用下面的代碼來創建UI進行了填字遊戲... 我定製電網 它仍然有一些問題(滾動的問題),但它應該ATLEAST給你什麼做的一些想法:

public class GridField extends Field 
{ 

int WIDTH = 0; 
int HEIGHT = 0; 
int x = 0; 
int y = 0; 
int numRows = 0; 
int GRID_WIDTH = 30; 
int GRID_HEIGHT = 30; 
int fill_width=20; 
int fill_height=20; 
int currentColumn = 0; 
int currentRow = 0; 
public String[][] values = null; 
int[][] numbers = null; 
private Font numericFont = null; 
private Font alphabetFont = null; 
Graphics G; 
int clu = 0; 
int length=0; 
char di; 

public GridField(int width) { 
    this.WIDTH = width; 
    HEIGHT = 3; 
} 

public GridField(int width, int height) { 
    super(Field.FOCUSABLE); 
    this.WIDTH = width; 
    HEIGHT = height; 
} 

public GridField(int width, int height, int numRows, String[][] values) { 
    super(Field.FOCUSABLE); 
    this.WIDTH = width; 
    HEIGHT = height; 
    this.numRows = numRows; 
    this.values = values; 
} 

public GridField(int width, int height, int numRows, String[][] values,int[][] numbers) { 
    super(Field.FOCUSABLE); 

    this.WIDTH = width; 
    HEIGHT = height; 
    this.numRows = numRows; 
    this.values = values; 
    this.numbers=numbers; 
} 

public int getPreferredWidth() 
{ 
    return WIDTH; 
} 

public int getPreferredHeight() 
{ 
    return HEIGHT; 
} 

protected void onFocus(int direction) 
{ 
    System.out.println("onfocus direction =====>"+direction); 
} 

protected void onUnfocus() 
{ 
    System.out.println("onunfocus direction =====>"); 
} 

protected void layout(int arg0, int arg1) 
{ 
    setExtent(getPreferredWidth(), getPreferredHeight()); 
} 

public void paint(int clue, int len, char dir) 
{ 
    try { 
     clu=clue; 
     length=len; 
     di=dir; 
     FontFamily fontFamily = null; 
     try { 
      fontFamily = FontFamily.forName("Verdana"); 
     } catch (ClassNotFoundException cnfe) { 
     } 
     numericFont = fontFamily.getFont(FontFamily.SCALABLE_FONT, 9); 
     alphabetFont = fontFamily.getFont(FontFamily.SCALABLE_FONT, 13);  
     //G.clear(); 
     G.setColor(0x00ffffff); 
     G.fillRect(0, 0, WIDTH, HEIGHT); 
     G.setColor(0x00000000); 
     y = 5; 
     for(int i = 0; i < numRows; i ++) 
     { 
      for(int j = 0; j < numRows; j ++) 
      { 
       G.setColor(Color.BLACK); 
       G.drawRect(x, y, GRID_WIDTH, GRID_HEIGHT);     
       G.setColor(Color.BLUE); 
       // G.setFont(alphabetFont); 
       G.setFont(Utility.getInstance().getGujaratiFont("rekha", 4)); 
       // if(values[i][j]!=".") 
       // G.drawText("" + values[i][j], x + 13, y + 11); 
       if(values[i][j]!=".") 
        G.drawText("" + values[i][j], x + 5, y + 11); 
       G.setColor(Color.BLACK); 
       G.setFont(numericFont); 
       if (numbers[i][j] == clue) 
       { 
        currentColumn=j; 
        currentRow=i; 
        G.setColor(Color.RED); 
        G.fillRect(x, y, GRID_WIDTH, GRID_HEIGHT); 

        G.setColor(Color.ORANGE); 
        if(dir=='a'||dir=='A') 
        { 

         G.drawRect(x+GRID_WIDTH, y, 30*(len-1), GRID_HEIGHT); 
         //      G.drawRect(x-1, y-1, 30*len+2, GRID_HEIGHT+2); 
         //      G.drawRect(x-2, y-2, 30*len+3, GRID_HEIGHT+3); 
         //      G.drawRect(x-3, y-3, 30*len+4, GRID_HEIGHT+4); 
         G.fillRect(x+GRID_WIDTH, y, 30*(len-1), GRID_HEIGHT); 
        } 
        else 
        { 
         G.drawRect(x, y+GRID_HEIGHT, GRID_WIDTH, 30*(len-1)); 
         G.fillRect(x, y+GRID_HEIGHT, GRID_WIDTH, 30*(len-1)); 
        } 


       } 

       G.setColor(Color.BLACK); 
       if(numbers[i][j]!=0) 
        G.drawText("" + numbers[i][j],x + 2 ,y + 2); 
       if(values[i][j] == "0"){ 
        G.setColor(Color.BLACK); 
        G.fillRect(x, y, GRID_WIDTH, GRID_HEIGHT); 
        //Field.VISUAL_STATE_FOCUS; 
       } 
       x = x + GRID_WIDTH - 1;  
      } 
      x = 0; 
      y = y + GRID_HEIGHT - 1;  
     } 
     //this.invalidate(); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

protected void paint(Graphics g) 
{ 

    FontFamily fontFamily = null; 
    try { 
     fontFamily = FontFamily.forName("Verdana"); 
    } catch (ClassNotFoundException cnfe) { 
    } 
    try { 
     numericFont = fontFamily.getFont(FontFamily.SCALABLE_FONT, 9); 
     alphabetFont = fontFamily.getFont(FontFamily.SCALABLE_FONT, 13); 
     G=g; 
     g.setColor(0x00ffffff); 
     g.fillRect(0, 0, WIDTH, HEIGHT); 
     g.setColor(0x00000000); 
     y = 5; 
     for(int i = 0; i < numRows; i ++) 
     { 
      for(int j = 0; j < numRows; j ++) 
      { 
       g.setColor(Color.BLACK); 
       g.drawRect(x, y, GRID_WIDTH, GRID_HEIGHT); 
       if (clu != 0) 
       { 
        if (numbers[i][j] == clu) 
        { 
         currentColumn=j; 
         currentRow=i; 
         G.setColor(Color.RED); 
         G.fillRect(x, y, GRID_WIDTH, GRID_HEIGHT); 

         G.setColor(Color.ORANGE); 
         if(di=='a'||di=='A') 
         { 

          G.drawRect(x+GRID_WIDTH, y, 30*(length-1), GRID_HEIGHT); 
          //       G.drawRect(x-1, y-1, 30*len+2, GRID_HEIGHT+2); 
          //       G.drawRect(x-2, y-2, 30*len+3, GRID_HEIGHT+3); 
          //       G.drawRect(x-3, y-3, 30*len+4, GRID_HEIGHT+4); 
          G.fillRect(x+GRID_WIDTH, y, 30*(length-1), GRID_HEIGHT); 
         } 
         else 
         { 
          G.drawRect(x, y+GRID_HEIGHT, GRID_WIDTH, 30*(length-1)); 
          G.fillRect(x, y+GRID_HEIGHT, GRID_WIDTH, 30*(length-1)); 
         } 
        } 
        //clu=0; 
       } 

       if(i == currentRow && j == currentColumn) 
       { 
        g.setColor(Color.RED); 
        g.fillRect(x, y, GRID_WIDTH, GRID_HEIGHT); 
       } 
       g.setColor(Color.BLUE); 
       g.setFont(Utility.getInstance().getGujaratiFont("rekha", 5)); 
       if(values[i][j]!=".") 
        g.drawText("" + values[i][j], x + 5, y + 11); 
       g.setColor(Color.BLACK); 
       g.setFont(numericFont); 
       if(numbers[i][j]!=0) 
        g.drawText("" + numbers[i][j],x + 2 ,y + 2); 
       if(values[i][j] == "0"){ 
        g.setColor(Color.BLACK); 
        g.fillRect(x, y, GRID_WIDTH, GRID_HEIGHT); 
        //Field.VISUAL_STATE_FOCUS; 
       } 
       x = x + GRID_WIDTH - 1;  
      } 
      x = 0; 
      y = y + GRID_HEIGHT - 1; 

     } 
     //clu=0; 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 


protected int moveFocus(int amount, int status, int time) { 
    System.out.println("moveFocus -=======>"); 
    return amount; 
} 

protected boolean navigationMovement(int dx, int dy, int status, int time) { 
    clu = 0; 
    System.out.println("navigationMovement -=======dx>"+dx); 
    System.out.println("navigationMovement -=======dy>"+dy); 
    if(dx == 1) 
    { 
     if(currentColumn < numRows - 1) 
     { 
      currentColumn ++; 
     } 
    } 
    else if(dx == -1) 
    { 
     if(currentColumn > 0) 
     { 
      currentColumn --; 
     }    
    } 
    else if(dy == 1) 
    { 
     if(currentRow < numRows - 1) 
     { 
      currentRow ++; 
     } 
     else 
      TabControlScreen.gridfocus(); 
    } 
    else if(dy == -1) 
    { 
     if(currentRow > 0) 
     { 
      currentRow --; 
     } 
    } 
    invalidate(); 
    return true; 
} 

public void drawText(String string) { 

    try { 
     System.out.println("inside keyChar ====>" + string); 
     System.out.println("CurrentRow:::" + currentRow + "CurrentColumn:::" 
       + currentColumn + "Values:::" 
       + values[currentRow][currentColumn]); 
     if (!values[currentRow][currentColumn].equalsIgnoreCase("0")) { 
      values[currentRow][currentColumn] = string;// String.valueOf(string); 
      System.out.println("GridField::Values::string::"+string); 
      invalidate(); 
     } else 
      Dialog.alert("Invalid Field!"); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    //return true; 
} 


public String getText() { 
    return ""; 

} 

public String returnText() { 
    return values[currentRow][currentColumn]; 

}