java - CardLayout not working properly -


i have written simple cardlayout example splitpane, combobox , few other panels containing buttons , label.

import java.awt.borderlayout; import java.awt.cardlayout; import java.awt.container; import java.awt.eventqueue; import java.awt.event.itemevent; import java.awt.event.itemlistener;  import javax.swing.jbutton; import javax.swing.jcombobox; import javax.swing.jframe; import javax.swing.jpanel; import javax.swing.jsplitpane; import javax.swing.jtextfield; import javax.swing.border.emptyborder;  public class splitpane_test extends jframe implements itemlistener {      private jpanel contentpane;     final static string buttonpanel = "card jbuttons";     final static string textpanel = "card jtextfield";     jpanel cards;      public static void main(string[] args) {         eventqueue.invokelater(new runnable() {              public void run() {                 try {                     splitpane_test frame = new splitpane_test();                     //frame.addcomponenttopane(frame.getcontentpane());                     frame.setvisible(true);                 } catch (exception e) {                     e.printstacktrace();                 }             }         });     }      public splitpane_test() {         setdefaultcloseoperation(jframe.exit_on_close);         setbounds(100, 100, 450, 300);         contentpane = new jpanel();         contentpane.setborder(new emptyborder(5, 5, 5, 5));         contentpane.setlayout(new borderlayout(0, 0));         setcontentpane(contentpane);          jsplitpane splitpane = new jsplitpane();         contentpane.add(splitpane, borderlayout.center);           jpanel comboboxpane = new jpanel();         string comboboxitems[] = {buttonpanel, textpanel};         jcombobox cb = new jcombobox(comboboxitems);         cb.seteditable(false);         cb.additemlistener(this);         comboboxpane.add(cb);         splitpane.setleftcomponent(comboboxpane);          //create "cards".         jpanel card1 = new jpanel();         card1.add(new jbutton("button 1"));         card1.add(new jbutton("button 2"));         card1.add(new jbutton("button 3"));          jpanel card2 = new jpanel();         card2.add(new jtextfield("textfield", 20));          //create panel contains "cards".         cards = new jpanel();         cards.add(card1, buttonpanel);         cards.add(card2, textpanel);         splitpane.setrightcomponent(cards);         cards.setlayout(new cardlayout(0, 0));     }      @override     public void itemstatechanged(itemevent e) {         // todo auto-generated method stub         system.out.print("event triggered \n");         cardlayout cl = (cardlayout) (cards.getlayout());         cl.show(cards, textpanel);     } } 

i can see splitpane combobox on left , other cardlayout panels on right. when change combobox items nothing happening on right size. in order verify if iam hitting cardout used system.out.print("event triggered \n"); surprising thing have seen displaying twice each combobox item change if calling twice

 event triggered event triggered 

can please suggest me iam doing wrong here , why event triggered getting hit twice. time , help.

  1. set layout manager before adding components.

  2. two items changing state; 1 being deselected, other selected. improve debugging output following:

    system.out.println("event triggered: " + e);

you'll need account event switching selection back--not changes in combo box should select textpanel.


Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -