java - SWT redraw shell -


the problem pretty obvious, want after press button (or label in case) layout change , update. tried several solution suggested none worked me. change in createloginlayout() inside 'login' mouse track listener. know code looks overcomplicated, because use windowbuilder

protected shell mainshell; private text hangmanpic; private text cluefield; private composite alphabetcomposite; private display display; private label currguess; private gamemanager gamemanager; private label cluetitle; private text usrfield; private label passtitle; private text passfield; private label login; private label register;  public static void main(string[] args) {     try {         main window = new main();         window.open();     } catch (exception e) {         e.printstacktrace();     } }  /**  * open window.  */ public void open() {     display = display.getdefault();     createcontents();     mainshell.open();     mainshell.layout();     while (!mainshell.isdisposed()) {         if (!display.readanddispatch()) {             display.sleep();         }     } }  /**  * create contents of window.  * @wbp.parser.entrypoint  */ protected void createcontents() {      //init new game     gamemanager=new gamemanager();      //creategamemainlayout();     createloginlayout();     //createregisterlayout();  }  /**  * creates layout of login page  */ private void createloginlayout(){     mainshell = new shell(display,swt.close | swt.title | swt.min);     mainshell.setsize(685, 481);     mainshell.settext("location hangman");     mainshell.setlayout(new formlayout());     image image = new image(display, system.getproperty("user.dir")+"/res/back.jpg");     mainshell.setbackgroundimage(image);     mainshell.setbackgroundmode(swt.inherit_force);      label gametitle = new label(mainshell, swt.none);     gametitle.setfont(new font(display.getdefault(),"djb chalk up", 40, swt.none ));     gametitle.setforeground(swtresourcemanager.getcolor(swt.color_white));     gametitle.setalignment(swt.center);     gametitle.settext("location hangman ^");     formdata fd_gametitle = new formdata();     fd_gametitle.top = new formattachment(0, 94);     fd_gametitle.left = new formattachment(0, 10);     fd_gametitle.right = new formattachment(100, -10);     fd_gametitle.bottom = new formattachment(0, 163);     gametitle.setlayoutdata(fd_gametitle);      label usrtitle = new label(mainshell, swt.none);     usrtitle.setfont(new font(display.getdefault(),"djb chalk up", 20, swt.none ));     usrtitle.setforeground(swtresourcemanager.getcolor(swt.color_white));     usrtitle.setalignment(swt.right);     formdata fd_usrtitle = new formdata();     fd_usrtitle.top = new formattachment(gametitle, 81);     fd_usrtitle.left = new formattachment(0, 10);     usrtitle.setlayoutdata(fd_usrtitle);     usrtitle.settext("username:");      usrfield = new text(mainshell, swt.none);     fd_usrtitle.right = new formattachment(usrfield, -6);     usrfield.setfont(new font(display.getdefault(),"djb chalk up", 20, swt.none ));     usrfield.setforeground(swtresourcemanager.getcolor(swt.color_white));     formdata fd_usrfield = new formdata();     fd_usrfield.left = new formattachment(0, 331);     fd_usrfield.right = new formattachment(100, -148);     fd_usrfield.top = new formattachment(gametitle, 81);     usrfield.setlayoutdata(fd_usrfield);      passtitle = new label(mainshell, swt.none);     passtitle.setfont(new font(display.getdefault(),"djb chalk up", 20, swt.none ));     passtitle.setforeground(swtresourcemanager.getcolor(swt.color_white));     passtitle.setalignment(swt.right);     formdata fd_passtitle = new formdata();     fd_passtitle.top = new formattachment(usrtitle, 22);     fd_passtitle.right = new formattachment(usrtitle, 0, swt.right);     fd_passtitle.left = new formattachment(0, 10);     passtitle.setlayoutdata(fd_passtitle);     passtitle.settext("password:");      passfield = new text(mainshell, swt.password | swt.none);     passfield.setfont(new font(display.getdefault(),"djb chalk up", 20, swt.none ));     passfield.setforeground(swtresourcemanager.getcolor(swt.color_white));     formdata fd_passfield = new formdata();     fd_passfield.top = new formattachment(passtitle, 0, swt.top);     fd_passfield.left = new formattachment(usrfield, 0, swt.left);     fd_passfield.right = new formattachment(100, -148);     passfield.setlayoutdata(fd_passfield);      login = new label(mainshell, swt.none);     fd_passtitle.bottom = new formattachment(login, -43);     login.setalignment(swt.center);     login.setfont(new font(display.getdefault(),"djb chalk up", 20, swt.none ));     login.setforeground(swtresourcemanager.getcolor(swt.color_white));     login.settext("login");     formdata fd_login = new formdata();     fd_login.right = new formattachment(usrtitle, 0, swt.right);     fd_login.bottom = new formattachment(100, -27);     fd_login.top = new formattachment(100, -68);     fd_login.left = new formattachment(0, 202);     login.setlayoutdata(fd_login);     login.addmousetracklistener(new mousetrackadapter() {         @override         public void mouseenter(mouseevent arg0) {             login.setforeground(swtresourcemanager.getcolor(swt.color_dark_gray));         }         @override         public void mouseexit(mouseevent arg0) {             login.setforeground(swtresourcemanager.getcolor(swt.color_white));         }     });       register = new label(mainshell, swt.none);     register.addmouselistener(new mouseadapter() {         @override         public void mousedown(mouseevent arg0) {              createregisterlayout(); //change of layout              mainshell.layout(true, true);             mainshell.redraw();             mainshell.update();           }     });     register.setalignment(swt.center);     register.setfont(new font(display.getdefault(),"djb chalk up", 20, swt.none ));     register.setforeground(swtresourcemanager.getcolor(swt.color_white));     register.settext("register");     formdata fd_register = new formdata();     fd_register.top = new formattachment(login, 0, swt.top);     fd_register.left = new formattachment(usrfield, 0, swt.left);     fd_register.right = new formattachment(100, -225);     register.setlayoutdata(fd_register);     register.addmousetracklistener(new mousetrackadapter() {         @override         public void mouseenter(mouseevent arg0) {             register.setforeground(swtresourcemanager.getcolor(swt.color_dark_gray));         }         @override         public void mouseexit(mouseevent arg0) {             register.setforeground(swtresourcemanager.getcolor(swt.color_white));         }     });  }  /**  * creates layout of register page  */ private void createregisterlayout(){     mainshell = new shell(display,swt.close | swt.title | swt.min);     mainshell.setsize(685, 481);     mainshell.settext("location hangman");     mainshell.setlayout(new formlayout());     image image = new image(display, system.getproperty("user.dir")+"/res/back.jpg");     mainshell.setbackgroundimage(image);     mainshell.setbackgroundmode(swt.inherit_force);      label gametitle = new label(mainshell, swt.none);     gametitle.setfont(new font(display.getdefault(),"djb chalk up", 40, swt.none ));     gametitle.setforeground(swtresourcemanager.getcolor(swt.color_white));     gametitle.setalignment(swt.center);     gametitle.settext("register");     formdata fd_gametitle = new formdata();     fd_gametitle.top = new formattachment(0, 94);     fd_gametitle.left = new formattachment(0, 10);     fd_gametitle.right = new formattachment(100, -10);     fd_gametitle.bottom = new formattachment(0, 163);     gametitle.setlayoutdata(fd_gametitle);      label usrtitle = new label(mainshell, swt.none);     usrtitle.setfont(new font(display.getdefault(),"djb chalk up", 20, swt.none ));     usrtitle.setforeground(swtresourcemanager.getcolor(swt.color_white));     usrtitle.setalignment(swt.right);     formdata fd_usrtitle = new formdata();     fd_usrtitle.top = new formattachment(gametitle, 81);     fd_usrtitle.left = new formattachment(0, 10);     usrtitle.setlayoutdata(fd_usrtitle);     usrtitle.settext("enter username:");      usrfield = new text(mainshell, swt.none);     fd_usrtitle.right = new formattachment(usrfield, -6);     usrfield.setfont(new font(display.getdefault(),"djb chalk up", 20, swt.none ));     usrfield.setforeground(swtresourcemanager.getcolor(swt.color_white));     formdata fd_usrfield = new formdata();     fd_usrfield.left = new formattachment(0, 331);     fd_usrfield.right = new formattachment(100, -148);     fd_usrfield.top = new formattachment(gametitle, 81);     usrfield.setlayoutdata(fd_usrfield);      passtitle = new label(mainshell, swt.none);     passtitle.setfont(new font(display.getdefault(),"djb chalk up", 20, swt.none ));     passtitle.setforeground(swtresourcemanager.getcolor(swt.color_white));     passtitle.setalignment(swt.right);     formdata fd_passtitle = new formdata();     fd_passtitle.top = new formattachment(usrtitle, 22);     fd_passtitle.right = new formattachment(usrtitle, 0, swt.right);     fd_passtitle.left = new formattachment(0, 10);     passtitle.setlayoutdata(fd_passtitle);     passtitle.settext("enter password:");      passfield = new text(mainshell, swt.password | swt.none);     passfield.setfont(new font(display.getdefault(),"djb chalk up", 20, swt.none ));     passfield.setforeground(swtresourcemanager.getcolor(swt.color_white));     formdata fd_passfield = new formdata();     fd_passfield.top = new formattachment(passtitle, 0, swt.top);     fd_passfield.left = new formattachment(usrfield, 0, swt.left);     fd_passfield.right = new formattachment(100, -148);     passfield.setlayoutdata(fd_passfield);       register = new label(mainshell, swt.none);     register.setalignment(swt.center);     register.setfont(new font(display.getdefault(),"djb chalk up", 20, swt.none ));     register.setforeground(swtresourcemanager.getcolor(swt.color_white));     register.settext("ok");     formdata fd_register = new formdata();     fd_register.bottom = new formattachment(100, -40);     fd_register.left = new formattachment(0, 276);     fd_register.right = new formattachment(100, -280);     register.setlayoutdata(fd_register);     register.addmousetracklistener(new mousetrackadapter() {         @override         public void mouseenter(mouseevent arg0) {             register.setforeground(swtresourcemanager.getcolor(swt.color_dark_gray));         }         @override         public void mouseexit(mouseevent arg0) {             register.setforeground(swtresourcemanager.getcolor(swt.color_white));         }     });    } 

in createregisterlayout, create new shell, shell never opened. since field mainshell re-assigned invisible shell, subsequent calls mainshell, such layout(), update() etc., don't have visible effect.


Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -