显示重叠问题

来源:互联网 发布:陕西像素数据 编辑:程序博客网 时间:2024/05/20 03:45
package canvas;

import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;

public class ManageDemo extends MIDlet {
private Display display;
private MyCanvas canvas;

public ManageDemo() {
// TODO Auto-generated constructor stub
display = Display.getDisplay(this);
canvas = new MyCanvas(this);
}

protected void destroyApp(boolean arg0)  {
// TODO Auto-generated method stub

}

protected void pauseApp() {
// TODO Auto-generated method stub

}

protected void startApp()  {
// TODO Auto-generated method stub
display.setCurrent(canvas);
}
public void exitApp(){
destroyApp(false);
notifyDestroyed();
}
class MyCanvas extends Canvas implements CommandListener{
private ManageDemo manage;
private Command exit = new Command("Exit",Command.EXIT,1);
private Command send = new Command("发送",Command.SCREEN,1);
private Command cmdok = new Command("完成",Command.OK,1);
private Command cmdback = new Command("返回",Command.BACK,1);
private int currentField = -1; 
private TextBox[] m_textBoxs = new TextBox[2];
private TextBox mobileBox;
private TextBox contentBox;
private String[] m_strValues = new String[2];
public MyCanvas(ManageDemo manage){
this.manage = manage;
this.addCommand(exit);
this.addCommand(send);
this.setCommandListener(this);
this.contentBox = new TextBox("短信内容",null,213,TextField.ANY);
this.contentBox.addCommand(cmdok);
this.contentBox.addCommand(cmdback);
this.contentBox.setCommandListener(this);
this.mobileBox = new TextBox("手机号码",null,11,TextField.PHONENUMBER);
this.mobileBox.addCommand(cmdok);
this.mobileBox.addCommand(cmdback);
this.mobileBox.setCommandListener(this);
m_textBoxs[0] = mobileBox;   
m_textBoxs[1] = contentBox;

}
public void paint(Graphics g){
Font font = Font.getFont(0, 0, 0);
g.setClip(0, 0, getWidth(), getHeight());
g.setColor(250, 210, 130);
g.drawRect(0, 0, getWidth(), getHeight());

g.setColor(0x000000);
g.drawString("手机号码", 5, 5, Graphics.LEFT|Graphics.TOP);
if(currentField == 0){
g.setColor(0x336699);
}
else
g.setColor(0xCCCCCC);
g.drawRect(5, 19, getWidth()-10, 25);
char[] ch_str;   
int p_str_w = 0;   
int p_str_index = 0;   
if (m_strValues[0] != null) {   
g.setColor(0);   
ch_str = m_strValues[0].toCharArray();   
for (; p_str_index < ch_str.length; p_str_index++) {   
p_str_w += font.charWidth(ch_str[p_str_index]);   
}
g.drawChars(ch_str, 0, p_str_index, 7, 22, Graphics.LEFT   
     | Graphics.TOP);   
}  

g.setColor(0x000000);
g.drawString("短信内容", 5, 43, Graphics.LEFT|Graphics.TOP);
if(currentField == 1){
g.setColor(0x336699);
}
else
g.setColor(0xCCCCCC);
g.drawRect(5, 59, getWidth()-10, getHeight()-59-3);
if(m_strValues[1]!=null){
g.setColor(0);
ch_str = m_strValues[1].toCharArray();

g.drawChars(ch_str, 0, ch_str.length, 7, 62, Graphics.LEFT|Graphics.TOP);
}

}
public void keyPressed(int keyCode){
int code = getGameAction( keyCode);
switch(code){
case Canvas.UP:
currentField--;
if (currentField < 0)   
    currentField = 0;   
repaint();   
break;
case Canvas.DOWN:
currentField++;
if (currentField > 1)   
    currentField = 1;   
repaint();   
break;
default:
if (code == Canvas.FIRE) {   
manage.display.setCurrent(m_textBoxs[currentField]);   
   }   

break;
}
}
public void commandAction(Command c,Displayable d){
if(c == exit){
manage.exitApp();
}
if(c == cmdok){
this.m_strValues[currentField] = m_textBoxs[currentField].getString();
manage.display.setCurrent(this);
}

}
}
}
1、问题是在输入到TextBox内容后,返回canvas界面时显示和TextBox重叠了,如何解决呢?
2、如何判断短信内容满一行并换行呢?
3、当短信内容超过页面时如何加滚动条呢?
0 0