java - JPanel doesnt show components after the second button click -
i want put jtextpane component in jpanel gridbaglayout when click on button. code works fine first button click, after, next components not displayed.
here code:
import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; public class refreshpanel { private jframe frame = new jframe(); private jpanel panel = new jpanel(); private jtextpane [] textpane;// = new jtextpane[1]; private jscrollpane scrollbar; private arraylist arraylist = new arraylist(); private jbutton newitem = new jbutton("new"); private int counter=0; private gridbaglayout gbl = new gridbaglayout(); refreshpanel() { scrollbar = new jscrollpane(panel); panel.setbackground(color.white); panel.setlayout(gbl); addbuttonlistener(); createframe(); } //constructor public void addbuttonlistener() { newitem.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent arg0) { arraylist.add("data"); textpane = generatetextpane(arraylist.size(), arraylist); system.out.println(textpane.length); for(int i=0;i<textpane.length;i++) { system.out.println(textpane[i].gettext()); addcomponent(panel, gbl, textpane[i], 0, counter, 1, 1,1,1); panel.revalidate(); } } }); } private jtextpane[] generatetextpane(int arraysize, arraylist arraylist) { jtextpane [] textpane = new jtextpane[arraysize]; for(int i=0;i<textpane.length;i++) { textpane[i]=new jtextpane(); textpane[i].settext((string) arraylist.get(i)); } return textpane; } public void addcomponent(container cont, gridbaglayout gbl, component c, int x, int y, int width, int height, double weightx, double weighty) { gridbagconstraints gbc = new gridbagconstraints(); gbc.fill = gridbagconstraints.horizontal; gbc.gridx = x; gbc.gridy = y; gbc.gridwidth = width; gbc.gridheight = height; gbc.weightx = weightx; gbc.weighty = weighty; gbl.setconstraints( c, gbc ); cont.add( c ); } public void createframe() { //frame.getcontentpane().setlayout(new flowlayout()); frame.add(scrollbar, borderlayout.center); frame.add(newitem, borderlayout.east); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.setsize(new dimension(300,300)); frame.setvisible(true); } public static void main(string [] args) { new refreshpanel(); } }
patrick: right! forgot change gridbagconstraints
addcomponent(panel, gbl, textpane[i], 0, i, 1, 1, 1, 1);
instead of
addcomponent(panel, gbl, textpane[i], 0, counter, 1, 1, 1, 1);
Comments
Post a Comment