0

画面にグラフを表示するアプリケーションに取り組んでいます。ペイント関数がチャートをレンダリングするカスタムフィールドを作成しました。ここで、この関数を呼び出してチャートを表示する方法を知りたいと思います。ここにサンプルコードを添付しましたが、表示されるのは空白の白い画面だけです。

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

1 に答える 1

2

私が気づいたことの1つは、あなたgetWidth()getHeight()電話が範囲を設定するために使用されているということです。の呼び出しが実際に終了し、0が返されるまで。setExtent()独自の計算を行ってフィールドの幅と高さを決定し、それを範囲に設定する必要があります(最大幅と最大幅よりも小さい場合に限ります)。高さが渡されます。また、コンストラクターから呼び出す必要はありません。コンストラクターが存在するマネージャーが、ペイントする必要があるときにその呼び出しを行うためです。getWidth()getHeight()layout()paint()

于 2011-07-21T12:58:54.013 に答える