我在方法中创建一个内部类。之后,我访问了一些之类的语句,访问内部类创建BitmapField并将其添加到HorizontalFieldManager
public class Test extends MainScreen
{
HorizontalFieldManager hfm;
Bitmap bitmap[] = new Bitmap[100];
BitmapField[] bitmapField = new BitmapField[100];
int countBitmap = 0;
Test()
{
VerticalFieldManager vfm_Main = new VerticalFieldManager();
hfm = new HorizontalFieldManager(HorizontalFieldManager.USE_ALL_WIDTH);
vfm_Main.add(hfm);
add(vfm_Main);
}
void drawBitmap()
{
bitmap[countBitmap] = new Bitmap(100, 100);
bitmapField[countBitmap] = new BitmapField(bitmap[countBitmap]){
public void paint(Graphics g)
{
................
................
g.drawLine(x1,y1,x2,y2);
}
}
synchronized(UiApplication.getEventLock())
{
for(int i = 0 ; i < bitmapField.length; i++)
{
if(bitmapField[i] != null)
{
bitmapField[i].setBitmap(bitmap[i]);
}
}
hfm.add(bitmapField[countBitmap]);
countBitmap++;
但这里的问题是创建bitmapField之前创建位图&后,就进入
synchronized(UiApplication.getEventLock()){hfm.add(bitmapField[countBitmap]); }
所以创建bitmapField之前,它增加了它在hfm。
所以输出就像“每次在hfm中添加一个新的BitmapField(意味着通过替换前一个位置在相同的位置)”。但是我希望BitmapField在hfm中相邻。
怎么办?
控件在新的bitmapField()内部类之前首先转到hfm.add()的任何解决方案?
你的编码风格在这里似乎参差不齐的,而且似乎有些接近括号丢失。让你难以理解你在这里做什么。例如,第二代代码被剪切到哪里?它是drawBitmap()的结束吗? – Richard 2009-08-26 19:46:26
现在解决替换问题(通过替换前一个替换相同的位置)。但是一个新问题是,最近的图形是通过替换前一个图形而添加的。 意思是如果你第一次画,那么它正确地在bitmapField中。如果你第二次绘制,那么通过替换前一个,第二次绘制的图形被添加到bitmapField中。 paint()被调用2次绘制2个图纸。 如何解决这个问题? – Shreyas 2009-08-27 09:22:01