lớp Display. Hiển thị trong j2me

bachkhoa752

Member
7/6/13
31
1
8
27
em vẫn chưa hiểu rõ về 2 lớp Display và Displâyble mong các bác giúp đỡ. Dưới đây là 1 ví dụ e viết thử, nó bị lỗi khi chọn menu "đăng ký". Các bác phân tích lối và cách sửa giúp e với ạ.
File Midlet.java
Code:
import java.io.IOException;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
 
public class Midlet extends MIDlet implements CommandListener{

    private Display display;
    Form mainForm,test;
    Command cmOk,cmExit,cmBack,cmReg,cmAbout;
    static TextField id,pass;
    Alert loi;

    public Midlet(){
        cmOk = new Command("Login",Command.OK,1);
        cmReg = new Command("Đăng ký", Command.OK,1);
        cmBack = new Command("Trở về",Command.OK,2);
        cmExit = new Command("Thoát",Command.EXIT,2);
        id = new TextField("Username","",16,TextField.ANY);
        pass = new TextField("Password","",16,TextField.PASSWORD);
    }

    public void startApp() {
        display = Display.getDisplay(this);
        display.setCurrent((Form)initMainForm());
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }
 
// Form hiển thị chính khi bắt đầu
    Displayable initMainForm(){
        mainForm = new Form("Đăng nhập vào Hệ thống");
        cmReg =  new Command("Đăng Ký", Command.ITEM,3);
        cmAbout =  new Command("Giới thiệu", Command.ITEM,3);
        mainForm.append(id);
        mainForm.append(pass);
        mainForm.addCommand(cmOk);
        mainForm.addCommand(cmExit);
        mainForm.addCommand(cmReg);
        mainForm.addCommand(cmAbout);
        mainForm.setCommandListener(this);

    return mainForm;
    }
 
    //Xy ly sự kiển
        public void commandAction(Command cd, Displayable dl) {
                  if (dl == mainForm){
        if (cd==cmOk){
            test = new Form("Đăng nhập thành công");
            test.append("Đăng nhập thành công rồi thím");
            display.setCurrent(test);
          }
          if (cd == cmReg)
              // Bấm đăng ký và không hiện thị đc menu đang ký của lớp RegAcc
          try{
            display.getCurrent();
              RegAcc regAcc = new RegAcc();
              display.setCurrent(regAcc.initReg());
          } catch (Exception ex){
                loi = new Alert("Lỗi");
              loi.setString(ex.toString());
              display.setCurrent(loi);
          }
 
          if (cd == cmAbout){
              test = new Form("Giới thiệu");
              test.append("GIOI THIEU");
              test.addCommand(cmExit);
              display.setCurrent(test);
          }
          if (cd == cmExit){

              destroyApp(false);
              notifyDestroyed();
        }

        }
    }
  
}
đây là RegAcc.java // hiển thị menu dùng đăng ký acc
Code:
import javax.microedition.lcdui.*;

public class RegAcc {
    Form regForm;
    Command cmOk,cmExit,cmBack,cmReg,cmAbout;
    Display display;
    public RegAcc(){
            regForm = new Form("Đăng ký");
            regForm.append(Midlet.id);
            regForm.append(Midlet.pass);
            ChoiceGroup radio = new ChoiceGroup("Đồng ý điều khoản của chúng tôi",ChoiceGroup.BUTTON);
            radio.append("Đồng ý", null);
            regForm.append(radio);
            regForm.addCommand(cmOk);
            regForm.addCommand(cmExit);
            regForm.addCommand(cmBack);
    }
 
    public Displayable initReg(){
        return regForm;
    }

    }
 

Joe

Thành viên VIP
21/1/13
2,971
1,312
113
Không ai giúp e được sao???
Why you don't google for an answer ?
I give you here a "succinct" answer. The rest you should google for yourself.
DISPLAY is an image object that you can modify or manipulate ...
DISPLAYABLE is an image object that can only be "displayed" as it is...
When you show a DISPLAY object you've already run the DISPLAYABLE one.
 

bachkhoa752

Member
7/6/13
31
1
8
27
Ai biết tiếng việt vui lòng dùng tiếng việt nhé? Tiếng anh mình ko chuẩn?
Mình muốn mọi ngừoi phân tích lỗi trên, nguyên nhân và cách khắc phục.
Lỗi "IllegalStateException"
 

myfaith237

Member
7/4/13
52
8
8
32
Code:
          if (cd == cmReg)
              // Bấm đăng ký và không hiện thị đc menu đang ký của lớp RegAcc
          try{
            display.getCurrent();
              RegAcc regAcc = new RegAcc();
              display.setCurrent(regAcc.initReg());
          } catch (Exception ex){
                loi = new Alert("Lỗi");
              loi.setString(ex.toString());
              display.setCurrent(loi);
          }
 
    }

}
Cái phần này có nhất thiết phải dùng try...catch không?
 

Joe

Thành viên VIP
21/1/13
2,971
1,312
113
Ai biết tiếng việt vui lòng dùng tiếng việt nhé? Tiếng anh mình ko chuẩn?
Mình muốn mọi ngừoi phân tích lỗi trên, nguyên nhân và cách khắc phục.
Lỗi "IllegalStateException"
JAVA is ENGLISH. Hence: IllegalStateException. You have to learn English if you want to work with JAVA. Point, any further discussion is superfluous ! If you dislike English, pls. stay out and ignore my comment. I always dislike the lingual chauvinists.
 

bachkhoa752

Member
7/6/13
31
1
8
27
JAVA is ENGLISH. Hence: IllegalStateException. You have to learn English if you want to work with JAVA. Point, any further discussion is superfluous ! If you dislike English, pls. stay out and ignore my comment. I always dislike the lingual chauvinists.
I'm learning English. You can answer my question, can't you?
 

Joe

Thành viên VIP
21/1/13
2,971
1,312
113
I'm learning English. You can answer my question, can't you?
FYI: I'm not Vietnamese and I don't master the accents used in Vietnamese.

An object that has the capability of being placed on the display. In contrast to the official API a Displayable is realized as an interface in J2ME Polish. An object that has the capability of being placed on the display. A Displayable object may have a title, a ticker, zero or more commands and a listener associated with it. The contents displayed and their interaction with the user are defined by subclasses.
The title string may contain line breaks. The display of the title string must break accordingly. For example, if only a single line is available for a title and the string contains a line break then only the characters up to the line break are displayed.
Unless otherwise specified by a subclass, the default state of newly created Displayable objects is as follows:
  • it is not visible on theDisplay;
  • there is noTickerassociated with thisDisplayable;
  • the title isnull;
  • there are noCommandspresent; and
  • there is noCommandListenerpresent.
More:
http://www.enough.de/javadoc/j2me/de/enough/polish/ui/Displayable.html
http://www.ibm.com/developerworks/java/tutorials/j-j2me1/section4.html
 

Joe

Thành viên VIP
21/1/13
2,971
1,312
113
bạn đọc document của nó sẽ rõ. lỗi ở hàm
regForm.append(Midlet.id);
nó nói rõ là sẽ ném ra illegal exeption nếu tham số truyền vào Item đã được sở hữu bởi một
container khác. bạn đã chứa nó ở trong mainForm rùi thì khi gọi hàm này nó sẽ bị exeption thôi
Giống như hai người cùng tranh nhau cái chuôi dao ý. cách giải quyết là cho mỗi người cầm một con trông na ná nhau.hiểu chứ. hi hi

Túm lại là bạn nên học tiếng anh, vì như thế sẽ dễ tiến bộ hơn trong lập trình, bất kể là ngôn ngữ nào chứ
ko hẳn là mỗi java.
So is better. NO polemic, NO quarrelsome. Either you contribute or you stay out. By the way, it's NOT very helpful if YOU SPOONFEED people without having to ask for their own work.
 

Joe

Thành viên VIP
21/1/13
2,971
1,312
113
You should remove comment #13 too, I don't want to relate you any more.:))
Boy, for the sake of here and it's not my habit to delete things. You represent the diehard types of Vietnamese. They fought against the US almost to the last man. If we, Americans, didn't have conscience we've nuked Vietnam to ashes, not like the way we pulled out. Today, it proves that Vietnamese were wrong. The true enemy is China, not the US.
The same what you do here. You want to test how far you can go, do you ? Such a Vietnamese like you should be banned from every forum: Quarrelsome, uneducated, polemic, stubborn like a bullterrier.
 

Joe

Thành viên VIP
21/1/13
2,971
1,312
113
I wrote "When you show a DISPLAY object you've already run the DISPLAYABLE one.
You tried to squabble by all means: "When you show a DISPLAY object you've already run the DISPLAYABLE one.
Anh có nhận ra cái sai của mình ko. hay cần tôi chỉ ra. kết quả của hay đi xoi mói là như vậy thôi. ở bên kia tôi đã ko thèm nói vì tôi vẫn tôn trọng anh 38 tuổi, nhưng a quá thì tôi ko còn nể nữa đâu đó."
This http://www.ibm.com/developerworks/java/tutorials/j-j2me1/section4.html proves that your knowledge is insufficient, but your mouth is bigger than your brain.
So SHUT UP otherwise I'll do what I never want to do. That's my last warning.