Вызов метода рисования customFields - PullRequest
0 голосов
/ 21 июля 2011

Я работаю над приложением, которое отображает график на экране.Я создал пользовательское поле, функция рисования которого отображает диаграмму.Теперь я хочу знать, как я могу вызвать эту функцию, чтобы показать мой график.Я привел пример кода здесь, но вижу только пустой белый экран.

public class Graph extends MainScreen
{
       class MyField extends Field
       {
            protected void layout(int w,int h)
            {
                  setExtent(getWidth(),getHeight());
            }

            protected void paint(Graphics g)
            {
                    //my graph is drawn here
            }

            public MyField()
            {
                 paint(getGraphics());
            }
      }

      public Graph()
      {
          VerticalFieldManager vfm=new VerticalFieldManager();
          vfm.add(new MyField());
          add(vfm);
      }
}

1 Ответ

2 голосов
/ 21 июля 2011

Одна вещь, которую я заметил, это то, что ваши getWidth() и getHeight() вызовы используются для установки экстента. До тех пор, пока вы на самом деле не закончите вызывать setExtent(), getWidth() и getHeight() вернут 0. Вы должны делать свои собственные вычисления, чтобы определить, насколько широким и высоким является ваше Поле, а затем установить его для экстента (до тех пор, пока они меньше, чем максимальная ширина и максимальная высота, передаваемые в layout(). Кроме того, нет необходимости вызывать paint() из конструктора, поскольку менеджер, в котором он находится, сделает этот вызов для вас, когда это необходимо. окрашены.

...