有几次碰到JPanel的布局问题,在网上找了一些资料,想记录一下以免以后又碰到再到处找资料。
因为JPanel中的默认布局是FlowLayout,所以要想改变JPanel中的布局,就要在创建JPanel实例时更改他的布局设置,这一步是必要的,如果没有new一个新的布局而直接使用设置另外的布局,那么编译的结果还是默认的布局,而不是你设置的布局。
用例子说明下:
package PanelTest;
/**
* 测试JPanel的布局问题
* 对两个组件JLabel和JButton进行布局
*
*/
import java.awt.*;
import javax.swing.*;
public class PanelLayoutTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//try{
frameTest f = new frameTest();
f.setTitle("PanelLayoutTest");
f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
f.setVisible(true);
//}
//catch(Exception e){
// System.out.println(e);
//}
}
}
// JFrame class
class frameTest extends JFrame {
frameTest() {
panelTest p = new panelTest();
this.add(p);
this.pack();
}
}
// Panel class
class panelTest extends JPanel {
private JLabel label;
private JButton button;
panelTest() {
this.setLayout(new BorderLayout()); // 将panel的默认布局flow设置为设置边界布局,括号中是必须的
label=new JLabel();
label.setText("Test");
this.add(label, BorderLayout.SOUTH);//设置按钮的布局位置
button=new JButton("Test");
this.add(button, BorderLayout.NORTH);//设置label的布局位置
}
}