Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java me 如何从pointerPressed()方法显示新画布?_Java Me_Midp_Lcdui - Fatal编程技术网

Java me 如何从pointerPressed()方法显示新画布?

Java me 如何从pointerPressed()方法显示新画布?,java-me,midp,lcdui,Java Me,Midp,Lcdui,在画布上有一个图像,在触摸图像的某些部分时,我希望从pointerPressed()方法中启动一个新的画布 可能吗?到目前为止,我已经做了以下工作: protected void pointerPressed(int x, int y){ if ((x>=164 && x<=173)&&(y>=24 && y<=36)){ dis

在画布上有一个图像,在触摸图像的某些部分时,我希望从pointerPressed()方法中启动一个新的画布

可能吗?到目前为止,我已经做了以下工作:

   protected void pointerPressed(int x, int y){          
        if ((x>=164 && x<=173)&&(y>=24 && y<=36)){               
            disp.setCurrent(new elementDetails());
        }
    }
当我运行上面的代码时,什么都没有发生。我的意思是说,当前的图像不会改变为我试图在画布上显示的新图像

我的应用程序在指针按下事件后继续运行。它不会崩溃。它正确地显示了图像其他部分的坐标。我想要达到的是;当我在图像的某些特定点单击/触摸时,它应该加载一个新画布来代替旧画布。

通过调用Display.setCurrent()方法使画布可见。您可以从MIDlet中检索Display并将其传递到画布上,然后使用它。我希望此代码片段能够帮助您:

//MIDlet:

public class MyMIDlet extends MIDlet{
    ...
    final Canvas1 c1;
    final elementDetails c2;
    ...
    public MyMIDlet(){
        c1 = new Canvas1(this);
        c2 = new elementDetails();
    }
    ...
}
//游说1:

public class Canvas1 extends Canvas{
    MyMIDlet myMidlet;
    Display disp;

...
/**
*constructor
*/
public Canvas1(MyMIDlet myMidlet){
    this.MyMIDlet = myMidlet;
    disp = myMidlet.getDisplay();
}
...
public void paint(Graphics g){
    g.setColor(255,255,255);
    g.drawString("canvas1", 0, 0, 0);
}
...

protected void pointerPressed(int x, int y){          
    if ((x>=164 && x<=173)&&(y>=24 && y<=36)){               
        disp.setCurrent(myMidlet.c2);
}
}

你的代码似乎做了你想做的事情。你试过了吗?当我运行上面的代码时,什么都没有发生……我的意思是,当前图像不会更改为我试图在画布中显示的新图像:(你的应用程序是在指针按下事件后继续运行,还是只是在该点死锁Hi Gorkem,我的应用程序在指针按下事件后继续运行。它不会崩溃。它正确地显示了图像其他部分的坐标。我试图实现的是,当我在图像的某些特定点单击/触摸时图像它应该加载一个新的画布来代替旧的画布。您使用的是哪个平台?在J2ME中,图像必须加载到项目中。尝试将图像放在一个文件夹中,并将该文件夹包含到项目中。@Ameer Moaaviah:这种情况没有义务,好吗?对不起,Ameer,我无法很快回复您。我一直在尝试实现该建议是的,我把所有必要的图像都保存在一个名为“res”的文件夹中,并将其包含在项目中。最后我让它开始工作了。我要感谢所有人的帮助,特别是对“hasanghaforian”。因为这是我的第一个程序,我没有正确地从MIDlet检索显示并将其传递给我的用户canvas.“hasanghaforian的代码片段帮了我很多。再次感谢大家:)@user1448677:我已经用了很多次来帮助别人。在每一次帮助我的过程中,我都很高兴。
public class Canvas1 extends Canvas{
    MyMIDlet myMidlet;
    Display disp;

...
/**
*constructor
*/
public Canvas1(MyMIDlet myMidlet){
    this.MyMIDlet = myMidlet;
    disp = myMidlet.getDisplay();
}
...
public void paint(Graphics g){
    g.setColor(255,255,255);
    g.drawString("canvas1", 0, 0, 0);
}
...

protected void pointerPressed(int x, int y){          
    if ((x>=164 && x<=173)&&(y>=24 && y<=36)){               
        disp.setCurrent(myMidlet.c2);
}
}
class elementDetails extends Canvas{
    private Image elmDtlImg;
    public elementDetails(){
        try{
            elmDtlImg = Image.createImage("/details.jpg");
        }
        catch(IOException e){
            System.out.println("Couldn't load Detailed Info image" + e.getMessage());
        }               
    }
public void paint(Graphics g){
    //set the drawing color to white
    g.setGrayScale(255);
    //draw a big white rectangle over the whole screen (over the previous screen)
    g.fillRect(0, 0, getWidth(), getHeight());
    g.drawImage(elmDtlImg, 0, 0, 20);
}
}