如何在BlackBerry应用程序中制作半圆rect

如何在BlackBerry应用程序中制作半圆rect,blackberry,java-me,Blackberry,Java Me,在电子邮件下方,用户将在密码下方输入电子邮件n用户将输入密码,我可以制作正方形,但上边的正方形应为曲线,下边的正方形应为下正方形。由于只有绘制四个圆角的方法可用,您可以使用剪切矩形以直线剪切图形,也就是说,你实际上画了一个更大的圆形矩形,但把它的下半部分(或上半部分)剪掉。我做的东西,我想它能满足你的需要。您只需将它们添加到此经理中即可。请注意,我不认为它可以补偿边距或边距之类的内容,因此您可以使用paint()方法将其计算在内,或者将其包含在另一个具有适当边距/边距的管理器中: public


在电子邮件下方,用户将在密码下方输入电子邮件n用户将输入密码,我可以制作正方形,但上边的正方形应为曲线,下边的正方形应为下正方形。

由于只有绘制四个圆角的方法可用,您可以使用剪切矩形以直线剪切图形,也就是说,你实际上画了一个更大的圆形矩形,但把它的下半部分(或上半部分)剪掉。

我做的东西,我想它能满足你的需要。您只需将它们添加到此经理中即可。请注意,我不认为它可以补偿边距或边距之类的内容,因此您可以使用
paint()
方法将其计算在内,或者将其包含在另一个具有适当边距/边距的管理器中:

public class GroupFieldManager extends VerticalFieldManager {
    private int _rounding;
    private int _bgColor;
    private int _borderColor;

    private boolean _divider;
    private int _dividerColor;

    public GroupFieldManager(boolean divider, long style) {
        super(style);
        _rounding = 20;
        _bgColor = 0xFFFFFF;
        _borderColor = 0xAAAAAA;
        _divider = divider;
        _dividerColor = 0xAAAAAA;
    }

    public GroupFieldManager(boolean divider) {
        this(divider, 0);
    }

    public GroupFieldManager() {
        this(false, 0);
    }

    /**
     * Sets whether or not to draw a divider
     * @param on
     */
    public void setDivider(boolean on) {
        _divider = on;
    }

    /**
     * Sets the color for the divider (also turns divider on)
     * @param color
     */
    public void setDividerColor(int color){
        _dividerColor = color;
        _divider = true;
    }

    /**
     * Sets the background color for the grouping
     * @param color
     */
    public void setBackgroundColor(int color) {
        _bgColor = color;
    }

    /**
     * Sets the border color for the grouping
     * @param color
     */
    public void setBorderColor(int color) {
        _borderColor = color;
    }

    /**
     * Sets the amount of rounding for the border
     * @param rounding
     */
    public void setRounding(int rounding) {
        _rounding = rounding;
    }

    protected void paint(Graphics graphics) {
        int oldColor = graphics.getColor();

        //draw the background
        graphics.setColor(_bgColor);
        graphics.fillRoundRect(0, 0, getWidth(), getHeight(), _rounding, _rounding);

        //draw the border
        graphics.setColor(_borderColor);
        graphics.drawRoundRect(0, 0, getWidth(), getHeight(), _rounding, _rounding);

        //draw dividers
        if(_divider) {
            graphics.setColor(_dividerColor);
            int y = 0;

            //go through each field, figure it's height, and draw a line under it
            for(int i=0;i<getFieldCount();i++) {
                if(i != getFieldCount() - 1) {
                    int height = getField(i).getHeight();
                    y += height;

                    graphics.drawLine(0, y, getWidth(), y);
                }
            }
        }

        graphics.setColor(oldColor);
        super.paint(graphics);
    }
}
公共类GroupFieldManager扩展了VerticalFieldManager{
私人整数舍入;
私人国际色彩;
私人国际边界颜色;
私有布尔除法器;
私有内部分割颜色;
公共GroupFieldManager(布尔分隔符,长样式){
超级(风格);
_四舍五入=20;
_bgColor=0xFFFFFF;
_borderColor=0xAAAAA;
_分隔器=分隔器;
_分割颜色=0xAAAAA;
}
公共GroupFieldManager(布尔除法器){
这个(除法器,0);
}
公共组字段管理器(){
这个(假,0);
}
/**
*设置是否绘制分隔符
*@param on
*/
公共无效设置分隔符(布尔值开启){
_除法器=开;
}
/**
*设置分隔器的颜色(同时打开分隔器)
*@param颜色
*/
公共void setDividerColor(内部颜色){
_分割颜色=颜色;
_除法器=真;
}
/**
*设置分组的背景色
*@param颜色
*/
公共void setBackgroundColor(内部颜色){
_bgColor=颜色;
}
/**
*设置分组的边框颜色
*@param颜色
*/
公共颜色(整型颜色){
_边框颜色=颜色;
}
/**
*设置边框的舍入量
*@param取整
*/
公共无效设置舍入(整数舍入){
_四舍五入=四舍五入;
}
受保护的空心漆(图形){
int oldColor=graphics.getColor();
//画背景
图形。设置颜色(_bgColor);
fillRoundRect(0,0,getWidth(),getHeight(),_舍入,_舍入);
//划界
graphics.setColor(_borderColor);
graphics.drawRoundRect(0,0,getWidth(),getHeight(),_舍入,_舍入);
//抽分器
如果(_分隔符){
图形.setColor(_dividerColor);
int y=0;
//穿过每个区域,计算出它的高度,然后在下面画一条线
对于(int i=0;i