Aligning of EditField
i have created one lable and RoundedEditField.but i am not able to make that RoundedEditField under the lable in blackberry with spcific margin. How to do that.. hear is Code
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
}
}
If you're wanting it to be under the LabelField, you'll need to put them in a VerticalFieldManager rather than a HorizontalFieldManager. This should work for you:
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);
On a side note, you may consider creating a RoundedBasicEditField (or whatever name you'd like) class so you don't have to keep anonymous classing BasicEditField inside the code (makes the code more readable, and easier to implement changes for all of them if you find something else you want to do).
精彩评论