java - JPanel does not appear when i try to add it to ContentPane -
i'm having problem trying alter jpanels using buttons. have jframe 2 panels, 1 of them buttons, want them showed. other 1 1 switching everytime press 1 ot buttons of other panel. problem everytime press them nil ever displays, maintain buttons other panel phone call not appear.
code 1 of buttons follows
private void jbutton1actionperformed(java.awt.event.actionevent evt) { reparacaopanel r = new reparacaopanel(this, this.jpanel1); this.getcontentpane().remove(this.jpanel1); this.getcontentpane().add(r); //this.setcontentpane(r); this.visiblepanel.setvisible(false); this.visiblepanel = r; this.pack(); this.setvisible(true); r.setlocation(200, 200); this.getcontentpane().revalidate(); this.repaint(); } if seek utilize "this.setcontentpane(r);" (it sets frame show panel) panel shows. when seek phone call i'm trying in code above nil showed apart panel has buttons.
i have no thought i'm doing wrong, not seem problem jpanel i'm trying phone call shows if used alone.
anyone can help me out?
consider working illustration switching manually between panels. produces output.
.........
some tinynumberpanel every new instance shows number in center.
import javax.swing.jpanel; public class numberpanel extends jpanel { private static int counter = 0; public numberpanel() { setlayout(new borderlayout(0, 0)); jlabel lblnewlabel = new jlabel("" + counter++); lblnewlabel.sethorizontalalignment(swingconstants.center); add(lblnewlabel); } } setting frame private void initialize() { frame = new jframe(); frame.setbounds(100, 100, 450, 300); frame.setdefaultcloseoperation(jframe.exit_on_close); jpanel panel = new jpanel(); frame.getcontentpane().add(panel, borderlayout.south); jbutton btnnewbutton = new jbutton("new button"); btnnewbutton.addactionlistener(new actionlistener() { public void actionperformed(actionevent e) { frame.getcontentpane().remove(numberpanel); numberpanel = new numberpanel(); frame.getcontentpane().add(numberpanel, borderlayout.center); frame.pack(); } }); panel.add(btnnewbutton); numberpanel = new numberpanel(); frame.getcontentpane().add(numberpanel, borderlayout.center); frame.pack(); } testprogram import java.awt.borderlayout; import java.awt.eventqueue; import java.awt.event.actionevent; import java.awt.event.actionlistener; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jpanel; public class testpanelswitch { private jframe frame; private numberpanel numberpanel; public static void main(string[] args) { eventqueue.invokelater(new runnable() { public void run() { seek { testpanelswitch window = new testpanelswitch(); window.frame.setvisible(true); } grab (exception e) { e.printstacktrace(); } } }); } public testpanelswitch() { initialize(); } private void initialize() { // see above } } back question i think need pack frame, in anonymous actionlistener.
frame.getcontentpane().remove(numberpanel); numberpanel = new numberpanel(); frame.getcontentpane().add(numberpanel, borderlayout.center); frame.pack(); edit as leonidas mentioned possible revalidate frame. requires replace upper phone call pack theese.
frame.invalidate(); frame.validate(); java swing jpanel contentpane
No comments:
Post a Comment