通俗的讲jframe相当与桌子,而jpanel相当桌布,jbutton,jlabel等相当于杯子,碗筷等,杯子,碗筷虽然可以直接放到桌子上但不是很规范,应该放到桌布上才对。
以前我没有用jpanel来布局。直接就是jframe.add(jlabel1);然后就是jlabel1.setbound();这种做法不妥,虽然窗口可以正常显示,但是还是不规范,有事后会有点小问题,当组件更改的时候会有点问题,会有阴影(以前遇到过这种问题)。
正确的做法是
1.使用Container content=this.getContentPane();得到容器
2.实例化一个jpanel 例如JPanel panel1=new javax.swing.JPanel();
3.实例化组件比如JButton等
4.使用panel1.add()方法添加组件
5.定位比如说JButton1.setbound(0,0,23,34);注意这里的坐标是相对于其所在的容器panel1
6.使用例如content.add(panel,BorderLayout.CENTER);方法把“桌布”(panel1)放到“桌子”content上。(JFrame的默认布局是BorderLayout)
示例代码如下:
1: import java.awt.BorderLayout;
2: import java.awt.Color;
3: import java.awt.Container;
4: import javax.swing.JButton;
5: import javax.swing.JFrame;
6: import