运行时发现此异常:IllegalArgumentException
//-----------------------------
// 这是从书中拷贝下来的。编译时没错,运行时发现此异常。
// 请问错在哪?
//-----------------------------
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class OnlineHelp extends MIDlet implements CommandListener
{
private Display display;
private Command back;
private Command exit;
private Command help;
private Form form;
private TextBox helpMesg;
public OnlineHelp()
{
display = Display.getDisplay(this);
back = new Command("Back", Command.BACK, 2);
exit = new Command("Exit", Command.EXIT, 1);
help = new Command("Help", Command.HELP, 3);
form = new Form("Online Help Example");
helpMesg = new TextBox("Online Help", "Press Back to return to the previous screen or press Exit Exist to close this program.", 81, 0);
helpMesg.addCommand(back);
form.addCommand(exit);
form.addCommand(help);
form.setCommandListener(this);
helpMesg.setCommandListener(this);
}
public void startApp()
{
display.setCurrent(form);
}
public void pauseApp()
{
}
public void destroyApp(boolean unconditional)
{
}
public void commandAction(Command command,
Displayable displayable)
{
if (command == back)
{
display.setCurrent(form);
}
else if (command == exit)
{
destroyApp(false);
notifyDestroyed();
}
else if (command == help)
{
display.setCurrent(helpMesg);
}
}
}
问题点数:10、回复次数:3Top
1 楼RayLynn(福建风帆人才网 (www.ffrcw.com) IT)回复于 2005-07-18 14:01:13 得分 0
自己顶。。
郁闷到低了```大家帮个忙啊。Top
2 楼xueyong1203(二当家的)回复于 2005-07-18 14:50:56 得分 10
呵呵
刚才看了很久也没有发现问题
亲自在JB里运行了一下发现确是有IllegalArgumentException异常抛出
根据异常信息步入原来是这一句的问题
helpMesg = new TextBox("Online Help", "Press Back to return to the previous screen or press Exit Exist to close this program.", 81, 0);
说明一下
TextBox的构造函数TextBox(String label, String text, int maxSize, int constraints)
maxSize 是指最大的字符数,所以要求String text的最大值也不能超过这个maxSize
很明显"Press Back to return to the previous screen or press Exit Exist to close this program."超过了81个字符,所以编译虽然没错,但运行会有异常抛出
可以把81修改成281等等Top
3 楼RayLynn(福建风帆人才网 (www.ffrcw.com) IT)回复于 2005-07-18 15:00:21 得分 0
原来如此``非常感谢!!Top




