组件的布局
各组件的默认布局
- Appelt、Panel
默认为FlowLayout布局 - Frame、Dialog
默认为BorderLayout布局
布局的类型
顺序布局(FlowLayout)
Panel、Applet的默认类型
-
效果
![]()
-
代码
/*顺序 布局 */
import java.awt.*;
import java.awt.event.*;//AvctrionListener,AvctionEvent
public class sample65 extends Frame
{
sample65()
{
setTitle("FlowLayout布局");
setLayout(new FlowLayout(FlowLayout.LEFT,20,60));//左对齐,水平间距20,垂直间隔60,顺序布局(container类)
setBackground(Color.green);
Panel pnl = new Panel();
pnl.setBackground(Color.blue);
add(pnl);
pnl.setSize(400,400);
setVisible(true);
pnl.add(new Button("按键1"));
pnl.add(new Button("按键2"));
pnl.add(new Button("按键3"));
pnl.add(new Button("按键4"));
pack();
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
setVisible(false);
System.exit(0);
}
});
}
public static void main(String args[])
{
sample65 smp = new sample65();
}
}
- 解析
setLayout(new FlowLayout(FlowLayout.LEFT,20,60));
左对齐,水平间距20,垂直间隔60,顺序布局(container类)
边界布局(BoardLayout)
Frame、Dialog的默认布局
-
效果
![]()
-
代码
/*边界 布局 */
import java.awt.*;
import java.awt.event.*;//AvctrionListener,AvctionEvent
public class sample66 extends Frame
{
sample66()
{
super("BorderLayout布局");
setBackground(Color.green);
setVisible(true);
add(new Button("按键1"),"East");//靠东
add(new Button("按键2"),"West");
add(new Button("按键3"),"South");
add(new Button("按键4"),"North");
add(new Button("按键5"),"Center");
pack();
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
setVisible(false);
System.exit(0);
}
});
}
public static void main(String args[])
{
sample66 smp = new sample66();
}
}
- 解析
add(new Button("按键1"),"East");//靠东
add(new Button("按键2"),"West");
add(new Button("按键3"),"South");
add(new Button("按键4"),"North");
add(new Button("按键5"),"Center");
关键步骤。
网格布局(GridLayout)
-
效果
![]()
-
代码
/*网格 布局 */
import java.awt.*;
import java.awt.event.*;//AvctrionListener,AvctionEvent
public class sample67 extends Frame
{
sample67()
{
super("GridLayout布局");
setBackground(Color.green);
setLayout(new GridLayout(3,2));//3行2列
setVisible(true);
add(new Button("按键1"));
add(new Button("按键2"));
add(new Button("按键3"));
add(new Button("按键4"));
add(new Button("按键5"));
pack();
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
setVisible(false);
System.exit(0);
}
});
}
public static void main(String args[])
{
sample67 smp = new sample67();
}
}
- 解析
setLayout(new GridLayout(3,2));//3行2列
三行两列
网格袋布局(GridBagConstraints)
-
效果
![]()
-
代码
/*网格袋布局 */
import java.awt.*;
import java.awt.event.*;//AvctrionListener,AvctionEvent
public class sample68 extends Frame implements ActionListener
{
Button btn;
sample68()
{
super("GridBagConstraints 布局");
setBackground(Color.green);
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
setLayout(gridbag);
c.fill = GridBagConstraints.BOTH;
makebutton("Button0",gridbag,c);
// btn.addActionListener(this); //此处按键无作用
makebutton("Button1",gridbag,c);
makebutton("Button2",gridbag,c);
makebutton("Button3",gridbag,c);
c.gridwidth = GridBagConstraints.REMAINDER;//REMAINDER:后面的按键4必须是这行最后一个
makebutton("Button4",gridbag,c);
c.gridwidth = 2; //Button5的宽度:2个按键
makebutton("Button5",gridbag,c);
c.gridwidth = 1;
makebutton("Button51",gridbag,c);
c.gridwidth = GridBagConstraints.REMAINDER;
makebutton("Button52",gridbag,c);
c.gridwidth = GridBagConstraints.RELATIVE;//RELATIVE:Button6为倒数第二个组件
makebutton("Button6",gridbag,c);
c.gridwidth = GridBagConstraints.REMAINDER;
makebutton("Button7",gridbag,c);
c.gridwidth = 1;
c.gridheight = 2;
makebutton("Button8",gridbag,c);
c.gridwidth = GridBagConstraints.REMAINDER;
c.gridheight = 2;
makebutton("Button9",gridbag,c);
makebutton("退出",gridbag,c);
setVisible(true);
pack();
btn.addActionListener(this);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
setVisible(false);
System.exit(0);
}
});
}
protected void makebutton(String name,GridBagLayout gridbag,GridBagConstraints c)
{
btn = new Button(name);
gridbag.setConstraints(btn,c);
add(btn);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == btn)
{
System.exit(0);
}
}
public static void main(String args[])
{
sample68 smp = new sample68();
}
}
null布局
-
效果
![]()
-
代码
/*null布局 */
import java.awt.*;
import java.awt.event.*;//AvctrionListener,AvctionEvent
public class sample69 extends Frame
{
Button btn1,btn2,btn3,btn4;
Panel pnl;
sample69()
{
super("null 布局");
setBounds(400,100,300,300);
pnl = new Panel();
add(pnl);
pnl.setBackground(Color.black);
setLayout(null);//此步删除后,按键4充满整个面板
btn1 = new Button("按键1");
btn2 = new Button("按键2");
btn3 = new Button("按键3");
btn4 = new Button("按键4");
setVisible(true);
add(btn1);
add(btn2);
add(btn3);
add(btn4);
pnl.setBounds(20,40,200,190);
btn1.setBounds(230,60,40,20);
btn2.setBounds(230,90,40,20);
btn3.setBounds(230,120,40,20);
btn4.setBounds(230,150,40,20);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
setVisible(false);
System.exit(0);
}
});
}
public static void main(String args[])
{
sample69 smp = new sample69();
}
}
- 解析
setLayout(null);
此步删除后,按键4充满整个面板
卡片布局(CardLayout)
-
效果
![]()
-
代码
/*卡片(CardLayout)布局 */
/* 第一个添加到 CardLayout 对象的组件为可见组件。*/
import java.awt.*;
import java.awt.event.*;//AvctrionListener,AvctionEvent
public class sample610 extends Frame implements ActionListener
{
static Panel pnl = new Panel();
static CardLayout crd = new CardLayout(20,15);
Button btn1 = new Button("First Cav");
Button btn2 = new Button("Last Cav");
Button btn3 = new Button("Previous Cav");
Button btn4 = new Button("Next Cav");
Cvs cvs[] = new Cvs[10];
sample610()
{
super("CardLayout 布局");
setSize(350,250);//frame的大小
setBackground(Color.green);
setVisible(true);
setLayout(null);//设置窗口为null布局
pnl.setBackground(Color.blue);
pnl.setBounds(0,40,200,190);
pnl.setLayout(crd);//设置面板为cardlayout布局
add(pnl);
setVisible(true);
add(btn1);
add(btn2);
add(btn3);
add(btn4);
pnl.setBounds(20,40,200,190);
btn1.setBounds(230,60,80,20);
btn2.setBounds(230,90,80,20);
btn3.setBounds(230,120,80,20);
btn4.setBounds(230,150,80,20);
for(int k=0 ; k < 10 ; k++)
{
cvs[k] = new Cvs(k);
// pnl.add(""+k,cvs[k]);//”“+k表示将k和空字符相连,添加name = ”k”、comp = cvs[8]的画布,有卵用?
pnl.add(cvs[k]);
}
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
btn4.addActionListener(this);
addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
setVisible(false);
System.exit(0);}});
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == btn1)
{
crd.first(pnl);
}
else if(e.getSource() == btn2)
{
crd.last(pnl);
}
else if(e.getSource() == btn3)
{
crd.previous(pnl);
}
else if(e.getSource() == btn4)
{
crd.next(pnl);
}
}
class Cvs extends Canvas
{
int i;
Cvs(int j)
{
i = j;
setBackground(Color.yellow);
}
public void paint(Graphics g) //paint自动执行
{
g.setColor(Color.red);//用红色设置矩形的颜色
g.fillRect(30,25,10+10*i,8+8*i);//用该颜色填充矩形
g.drawString("这是第" + (i+1) + "个画面",20,150);//画布的文字
}
}
public static void main(String args[])
{
sample610 smp = new sample610();
crd.first(pnl); //容器为pnl
}
}
[我的新浪博客:NeyzoterSong](http://blog.sina.com.cn/neyzoter)
[我的微博:Neyzoter](http://weibo.com/u/2518056960)
posted on 2016-02-28 14:37 NeyzoterSong 阅读(341) 评论(0) 收藏 举报






浙公网安备 33010602011771号