Толстая окантовка для округлой кнопки в ежевике - PullRequest
0 голосов
/ 19 января 2012

Я получаю это ... Мне нужно изображение ниже enter image description here Я новичок в 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 ]

2 голосов
/ 19 января 2012

Попробуйте этот код:

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

Я получил вот так:

Rounded Bordered Button

1 голос
/ 02 февраля 2012
    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);
0 голосов
/ 07 марта 2012

Попробуйте, все работает нормально.

 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);     
...