Aligning of EditField



我已经创建了一个标签和RoundedEditField。但是我不能在黑莓的标签下用特定的边距制作RoundedEditField。怎么做呢?代码

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 
         }
    }

如果你想让它在LabelField下面,你需要把它们放在一个垂直fieldmanager而不是一个水平fieldmanager中。这应该对你有用:

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(或任何您喜欢的名称)类,这样您就不必在代码中保持匿名类BasicEditField(使代码更具可读性,并且如果您发现您想做的其他事情,则更容易实现所有这些更改)。

相关内容

  • 没有找到相关文章

最新更新