/* iアプリ, MIDP での不揮発性メモリへの記録の例 Time-stamp: "2005/12/08 Thu 19:45 hig" Saburo Higuchi 2003-2005 http://www.math.ryukoku.ac.jp/~hig/ プログラム解説等 http://www.a.math.ryukoku.ac.jp/~hig/course/juniors_2005/09/ */ import com.nttdocomo.ui.*; import javax.microedition.io.*; // スクラッチパッド import java.io.*; // スクラッチパッド /** IApplication または MIDlet を継承するクラス */ public class MemorySample extends IApplication { /** 起動するときに呼ばれる メソッド. 必須. */ public void start(){ MemoryCanvas cc=new MemoryCanvas(this); Display.setCurrent(cc); } } /** Canvas を継承するクラス. */ class MemoryCanvas extends Canvas implements SoftKeyListener { MemorySample parent; Panel p; private int rgb[] = {0,0,0}; // RGB 値 String tblabel [] = {"R","G","B"}; TextBox tbparam[]; String cctitle [] = {"入力"}; String cftitle [] = {"色"}; private final int dataversion=1; /** コンストラクタ. 最初に1回だけ実行される */ MemoryCanvas(MemorySample m){ this.parent=m; DataInputStream in=null; try { in = Connector.openDataInputStream("scratchpad:///0"); if( dataversion == in.readInt()){ for(int i=0; i < rgb.length; i++){ rgb[i]=in.readInt(); } } } catch (Exception e){ Dialog dlg=new Dialog(Dialog.DIALOG_WARNING,"入力失敗"); dlg.setText("" + e); dlg.show(); } finally { if( in!=null ){ try { in.close(); } catch ( Exception e){ } } } setSoftLabel(Frame.SOFT_KEY_1, cctitle[0]); } public void paint(Graphics g){ g.setColor(Graphics.getColorOfRGB(rgb[0],rgb[1],rgb[2])); g.fillRect(0,0,getWidth(),getHeight()); // 画面を消す } /** Panel/Form を表示するメソッド*/ public void showPanel(){ p = new Panel(); p.setTitle("色の入力"); // 数値入力用 TextBox tbparam = new TextBox [tblabel.length]; for(int i=0; i < tbparam.length ; i++){ p.add(new Label(tblabel[i])); tbparam[i]= new TextBox("",3,1,TextBox.DISPLAY_ANY); tbparam[i].setEditable(true); tbparam[i].setInputMode(TextBox.NUMBER); p.add(tbparam[i]); tbparam[i].setText(""+rgb[i]); } // 1 では Panel と Canvas で異なる. p.setSoftLabel(Frame.SOFT_KEY_1,cftitle[0]); p.setSoftKeyListener(this); // Panel/Form p に制御を移す Display.setCurrent(p); } // パネルでのソフトキーイベント public void softKeyPressed(int key){ if( key==Frame.SOFT_KEY_1 ){ for(int i=0; i< tbparam.length ; i++){ rgb[i]=Integer.parseInt(tbparam[i].getText()); } DataOutputStream out=null; try { out = Connector.openDataOutputStream("scratchpad:///0"); out.writeInt(dataversion); for(int i=0; i < rgb.length; i++){ out.writeInt(rgb[i]); } } catch (Exception e){ Dialog dlg=new Dialog(Dialog.DIALOG_WARNING,"出力失敗"); dlg.setText("" + e); dlg.show(); } finally { if( out!=null){ try { out.close(); } catch (Exception e){ } } } Display.setCurrent(this);// Canvas に復帰 } } public void softKeyReleased(int key){ } public void processEvent(int type, int param){ if( type==Display.KEY_PRESSED_EVENT ){ switch( param ){ case Display.KEY_SOFT1: showPanel(); break; default: } } } } /* Local Variables: mode: java End: */