2011-09-15 1 views
0

나는 하나의 lable과 RoundedEditField를 만들었지 만, 블랙 베리의 lable 아래에 RoundedEditField를 만들 수는 없습니다. 그 작업을 수행하는 방법에 .. 듣고 코드EditField 정렬하기

enter code here 
public class MyClass extends MainScreen implements FieldChangeListener { 


ButtonField next; 
    Bitmap bit; 
    //String emp_id,emp_name,salary; 

     public MyClass() 
    { 
    bit=Bitmap.getBitmapResource("PlainScreen.png"); 
    VerticalFieldManager v_mgr=new VerticalFieldManager() 
    //HorizontalFieldManager h_mgr = new HorizontalFieldManager() 
     { 
     protected void paint(Graphics graphics) 
     { 
     graphics.drawBitmap(0, 0, Display.getWidth(),Display.getHeight(), bit, 0, 0); 
     super.paint(graphics); 
     } 
     protected void sublayout(int maxWidth, int maxHeight) //It fit the image to     device width and height. 
     { 
     super.sublayout(Display.getWidth(),Display.getHeight()); 
     setExtent(Display.getWidth(),Display.getHeight()); 
    } 
    }; 


     HorizontalFieldManager hSecond = new HorizontalFieldManager(USE_ALL_WIDTH); 
     /*BasicEditField roundedBorderEdit = new BasicEditField(); 
     XYEdges padding = new XYEdges(15, 15, 15, 15); 
     int color = Color.WHITE; 
     int lineStyle = Border.STYLE_FILLED; 
     Border roundedBorder = BorderFactory.createRoundedBorder(padding, 
      color, lineStyle); 
     roundedBorderEdit.setBorder(roundedBorder); 
     */ 
    LabelField lbl= new LabelField("LastName:", LabelField.FIELD_HCENTER | LabelField.NON_FOCUSABLE){ 
    protected void paint(Graphics g) 
    { 
     Font font1 = getFont(); 
     g.setColor(Color.WHITE); 
     super.paint(g); 
    }}; 

     BasicEditField lblName = new BasicEditField(" ","",50,BasicEditField.FIELD_HCENTER) 
    { 

     protected void paint(Graphics graphics) 
    { 
     Font font= getFont(); 
     graphics.drawRoundRect(0, 0, 240, font.getHeight(), 30, 30); 
     graphics.setColor(Color.BLACK); 
     super.paint(graphics); 
     graphics.setColor(Color.WHITE); 
     super.paint(graphics); 
     } 
     }; 
     hSecond.add(lbl); 
     hSecond.add(lblName); 
     hSecond.setMargin(0, 0, 0, 50); 
     hSecond.setPadding(5, 30, 20, 0); 
     v_mgr.add(hSecond); 
     //v_mgr.setPadding(0, 0, 0, 10); 
     HorizontalFieldManager hThird = new HorizontalFieldManager(USE_ALL_WIDTH); 
     LabelField lbl1= new LabelField("Number:",LabelField.FIELD_HCENTER |  LabelField.NON_FOCUSABLE){ 
      protected void paint(Graphics g) 
      { 
      Font font = getFont(); 
      g.setColor(Color.WHITE); 
      super.paint(g); 
      }}; 
     BasicEditField lblName1 = new BasicEditField("  ","",50,BasicEditField.FIELD_HCENTER) 
    { 
     protected void paint(Graphics graphics) { 
       Font font1= getFont(); 
       graphics.drawRoundRect(0, 0, 240, font1.getHeight(), 30, 30); 
       graphics.setColor(Color.BLACK); 
       super.paint(graphics); 
     graphics.setColor(Color.WHITE); 
     super.paint(graphics); 
     } 
     }; 
     //lblEmail.setFont(StaticVariables.font2); 
     hThird.add(lbl1); 
     hThird.add(lblName1); 
     hThird.setMargin(0, 0, 0, 50); 
     //PasswordEditField txtEmail = new PasswordEditField(); 
     //hThird.add(txtEmail); 
     hThird.setPadding(5, 30, 20, 0); 
     v_mgr.add(hThird); 
     //v_mgr.setPadding(0, 0, 0, 10); 
    add(v_mgr); 
     } 
     public void fieldChanged(Field field, int context) 
     { 
     // TODO Auto-generated method stub 
     } 
    } 
+0

문제를 해결하기 위해 코드를 게시하십시오. – koti

답변

2

당신이 레이블 필드에서 수를하고자하는 경우, 당신은 HorizontalFieldManager보다는 VerticalFieldManager에 넣어해야합니다. 이것은 당신을 위해 작동합니다 : 당신은 코드 내부 익명 클래스라는의 BasicEditField을 유지 할 필요가 없습니다

보조 노트에
VerticalFieldManager vfm = new VerticalFieldManager(); 
LabelField lbl = new LabelField("Last Name:"); 
lbl.setMargin(0, 0, yourMargin, 0); 
BasicEditField lblName = new BasicEditField() { // your rounded code }; 
vfm.add(lbl); 
vfm.add(lblName); 
hfmSecond.add(vfm); 

, 당신은 ((또는 당신이 원하는 어떤 이름) 클래스를 RoundedBasicEditField을 만드는 차종을 고려할 수 있습니다 당신이하고 싶은 다른 것을 찾으면 코드를 읽기 쉽고, 모든 코드를 쉽게 구현할 수 있습니다.)