Толстая окантовка для округлой кнопки в ежевике
Я получаю это... Я хочу изображение нижеЯ новичок в Blackberry.
Я хочу дать толстую границу для поля кнопки с закругленными углами в моем приложении.
Ниже мой код.
Я создал класс CustomBasicEditField.
protected void paint(Graphics graphics)
{
int x = (this.getWidth() - getFont().getAdvance(text)) >> 1;
int y = (this.getHeight() - getFont().getHeight()) >> 1;
graphics.setColor(backgroundColour);
graphics.fillRoundRect(0, 0, fieldWidth, fieldHeight, 40, 40);
graphics.setColor(border_color);
graphics.setStrokeWidth(5);
graphics.drawRoundRect(0, 0, fieldWidth, fieldHeight, 40, 40);
graphics.setColor(0x2bb1ff);
graphics.setFont(myFont);
graphics.drawText(text, x, y);
super.paint(graphics);
}
Если я создаю drawRoundRect(0,0,fieldWidth, fieldHeight, 0, 0), то он печатает квадрат с толстой рамкой.
Но я не хочу квадрат. Когда я сохраняю приведенный выше код, он создает закругленное поле редактирования, но тонкую границу.
Заранее спасибо.
3 ответа
Попробуйте этот код:
public class LoadingScreen extends MainScreen
{
ButtonField save;
public LoadingScreen()
{
setTitle("Loading Screen");
createGUI();
}
private void createGUI()
{
VerticalFieldManager vr=new VerticalFieldManager();
Border border=BorderFactory.createRoundedBorder(new XYEdges(5,5,5,5),Color.RED,Border.STYLE_FILLED);
// give XYEdges(10,10,10,10) and see the difference;
save=new ButtonField("Save");
save.setBorder(border);
vr.add(save);
vr.setPadding(5, 5, 5, 5);
add(vr);
}
public boolean onMenu(int instance)
{
return true;
}
}
Я получил вот так:
Bitmap borderBitmap = //a ![your image]
VerticalFieldManager vfm_email = new VerticalFieldManager();
vfm_email.setBorder(BorderFactory.createBitmapBorder(new XYEdges(5, 5,
5, 5), borderBitmap));
vfm_email.setMargin(m, 30, 0, 30);
email = new EmailAddressEditField(" ", "", 50, Field.FOCUSABLE);
vfm_email.add(email);
vfm_.add(vfm_email);
Попробуйте это, все работает нормально.
Border myBorder = BorderFactory.createBitmapBorder(new XYEdges(10, 10, 10, 10),
Bitmap.getBitmapResource("border.png"));
BasicEditField edt_searchText = new BasicEditField(TextField.NO_NEWLINE)
{
protected void paint(Graphics g)
{
if (getTextLength() == 0)
{
g.setColor(Color.LIGHTGRAY);
g.drawText("Search weeds", 0, 0);
}
g.setColor(Color.BLACK);
super.paint(g);
}
};
edt_searchText.setBorder(myBorder);