我已经创建了一个标签和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(使代码更具可读性,并且如果您发现您想做的其他事情,则更容易实现所有这些更改)。