Задание ширины и высоты для поля редактирования затрудняет просмотр текста в ежевике - PullRequest
0 голосов
/ 02 марта 2012

Я использовал EditField с некоторыми указанными шириной и высотой, которые хорошо работают, но, когда я ввожу текст в EditField, я не могу увидеть текст, и иногда, когда я нажимаю на него, я получаю NullPointerException. Я не могу понять, введен ли текст или нет. Кроме того, я не могу видеть курсор в моем поле. Если есть какие-либо ошибки, пожалуйста, дайте мне предложения.

Мой код:

       private EditField edto;
       private int tosetWidth =400 ,tosetHeight = 50;
       public WelcomeScreen()
       {
           /* Border For EditFields */
           Border bdr = BorderFactory.createRoundedBorder(new XYEdges(4, 4, 4, 4),Border.STYLE_SOLID);

           edto = new EditField(){

           protected void layout(int width, int height)
           {        
               setExtent(tosetWidth, tosetHeight);

           }

       };

       edto.setBorder(bdr);

1 Ответ

2 голосов
/ 02 марта 2012

Текст не отображается из-за этого

protected void layout(int width, int height)
        {        
            setExtent(tosetWidth, tosetHeight);

        }

просто удалите и попробуйте ваш код работает

, если вы хотите редактировать поле с вертикальной прокруткой и фиксированным размером, попробуйте выполнить следующее

/**
 * A class extending the MainScreen class, which provides default standard
 * behavior for BlackBerry GUI applications.
 */
public final class MyScreen extends MainScreen
{
    /**
     * Creates a new MyScreen object
     */
    public MyScreen()
    {        
        // Set the displayed title of the screen       
        setTitle("My Edit box Example");

        VerticalFieldManager vr=new VerticalFieldManager(VERTICAL_SCROLL|VERTICAL_SCROLLBAR)
        {
            protected void sublayout(int maxWidth, int maxHeight) {
                super.sublayout(200,100);
                setExtent(200, 100);
            }
        };

        Border bdr = BorderFactory.createRoundedBorder(new XYEdges(4, 4, 4, 4),Border.STYLE_SOLID);
        EditField edto = new EditField(){
            public void paint(Graphics g) 
            {
                getManager().invalidate();
                super.paint(g);
            }
     };

     vr.setBorder(bdr);
     vr.add(edto);
     add(vr);
     }
}

вы можете получить вывод следующим образом

enter image description here

...