swing - Java - Two Codes Comparison with GridBagLayout - IllegalArgumentException -
i tested code gridbaglayout, wonder why there's error code isn't code. code got exception illegalargumentexception: cannot add layout: constraint must string (or null)
:
import java.awt.*; import javax.swing.*; import java.awt.event.*; public class layout extends jframe { gridbag g=new gridbag(); public layout() { add(g, borderlayout.center); } public static void main(string[]args) { layout lay=new layout(); lay.setsize(500, 500); lay.setdefaultcloseoperation(jframe.exit_on_close); lay.setlocationrelativeto(null); lay.setvisible(true); } class gridbag extends jpanel { private jlabel label=new jlabel("test"); public gridbag() { setlayout(new gridbaglayout()); gridbagconstraints gbc=new gridbagconstraints(); container container=getcontentpane(); addc(label, container, gbc, 0, 0, 1, 4, 0, 0); } private void addc(component c, container container, gridbagconstraints gbc, int c, int r, int nc, int nr, double wx, double wy ) { gbc.gridx=c; gbc.gridy=r; gbc.gridwidth=nc; gbc.gridheight=nr; gbc.weightx=wx; gbc.weighty=wy; container.add(c, gbc); } } }
but code worked:
import java.awt.*; import javax.swing.*; import java.awt.event.*; class gridbag extends jpanel { private jlabel label=new jlabel("test"); public gridbag() { setlayout(new gridbaglayout()); gridbagconstraints gbc=new gridbagconstraints(); container container=this; addc(label, container, gbc, 0, 0, 1, 4, 0, 0); } private void addc(component c, container container, gridbagconstraints gbc, int c, int r, int nc, int nr, double wx, double wy ) { gbc.gridx=c; gbc.gridy=r; gbc.gridwidth=nc; gbc.gridheight=nr; gbc.weightx=wx; gbc.weighty=wy; container.add(c, gbc); } public static void main(string[]args) { gridbag g=new gridbag(); jframe frm=new jframe(); frm.setsize(500, 500); frm.add(g, borderlayout.center); frm.setdefaultcloseoperation(jframe.exit_on_close); frm.setlocationrelativeto(null); frm.setvisible(true); } }
one of difference there's new layout
class jframe
, second code use jframe
directly.
the problem here , 1 more difference between 2 versions.
container container=getcontentpane();
try
container container=this;
Comments
Post a Comment