私はキャンバスを拡張するクラスを持っています。もう1つのキャンバスクラスを作成しました。しかし、私はそれらを切り替えることができませんでした。J2MEでキャンバスを切り替える
J2MEでキャンバスを切り替えることはできますか?
私はキャンバスを拡張するクラスを持っています。もう1つのキャンバスクラスを作成しました。しかし、私はそれらを切り替えることができませんでした。J2MEでキャンバスを切り替える
J2MEでキャンバスを切り替えることはできますか?
import ...
public class MyMIDlet extends MIDlet{
...
final Canvas1 c1;
final Canvas2 c2;
...
public MyMIDlet(){
c1 = new Canvas1(this);
c2 = new Canvas2(this);
}
...
}
import ...
public class Canvas1 extends Canvas implements CommandListener{
MyMIDlet myMidlet;
Display disp;
Command switchDisp;
...
/**
*constructor
*/
public Canvas1(MyMIDlet myMidlet){
this.MyMIDlet = myMidlet;
disp = myMidlet.getDisplay();
switchDisp = new Command("switch", Command.SCREEN, 0);
this.addCommand(switchDisp);
this.setCommandListener(this);
}
...
public void paint(Graphics g){
g.setColor(255,255,255);
g.drawString("canvas1", 0, 0, 0);
}
...
public void commandAction(Command cmd, Displayable displayable){
disp.setCurrent(myMidlet.c2);
}
}
import ...
public class Canvas2 extends Canvas implements CommandListener{
MyMIDlet myMidlet;
Display disp;
Command switchDisp;
...
/**
*constructor
*/
public Canvas1(MyMIDlet myMidlet){
this.MyMIDlet = myMidlet;
disp = myMidlet.getDisplay();
switchDisp = new Command("switch", Command.SCREEN, 0);
this.addCommand(switchDisp);
this.setCommandListener(this);
}
...
public void paint(Graphics g){
g.setColor(255,255,255);
g.drawString("canvas2", 0, 0, 0);
}
...
public void commandAction(Command cmd, Displayable displayable){
disp.setCurrent(myMidlet.c1);
}
}
表示可能オブジェクトは、ディスプレイに配置できるオブジェクトです。 DisplayableクラスはDisplayableインタフェースを実装します。
Displayクラスは、アクティブなMIDletごとにインスタンス化され、デバイスの表示機能に関する情報を取得するメソッドを提供するディスプレイマネージャです。 Display.setCurrent()メソッドを呼び出すと、キャンバスが表示されます。
キャンバスはDisplayableインターフェイスを実装しています。
Displayableクラスはデバイスの画面に表示できるUI要素で、Displayクラスは実際のデバイスの画面の表示機能を抽象化して利用できるようにします。表示する現在のUI要素を表示または変更するためのメソッドを提供します。したがって、MIDletは、DisplayクラスのsetCurrent(Displayable要素)メソッドを使用して、Display上にDisplayable UI要素を表示します。
あなたのコード例では、キャンバスインスタンスに 'MyMIDlet myMidlet'フィールドを持つ必要はありません。 Didplayを得るためにコンストラクターでMidletオブジェクトを使用した後は、これはもう必要ありません。 – gnat
@gnat:私のコードは例です.ImMidletをCommandListenerとして設定して、キャンバスのコマンドアクションを処理したい場合(たとえば、いくつかのアクションでダイヤルしたり、他のアクションで表示を切り替えるなど)、参照が必要です。 – hasanghaforian
私は、それが良い意味を参照してください – gnat
何を試しましたか?ところで、キャンバス – gnat
のおかげです。私の問題を解決しました。 – furkanozdemir