Java me 如何从pointerPressed()方法显示新画布?
在画布上有一个图像,在触摸图像的某些部分时,我希望从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
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);
}
}