public class MyFlowLayout { private Frame f;
private Button button1, button2, button3;
public static void main (String args[]) {
MyFlowLayout mflow = new MyFlowLayout (); mflow.go(); }
public void go() {
f = new Frame (\演示\
f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent evt) { f.setVisible(false); f.dispose(); System.exit(0); } });
//f.setLayout(new FlowLayout());
f.setLayout(new FlowLayout(FlowLayout.LEADING, 20, 20)); button1 = new Button(\确定\ button2 = new Button(\打开\ button3 = new Button(\关闭\ f.add(button1); f.add(button2); f.add(button3); f.setSize (200,200); f.pack();
f.setVisible(true); } }
程序运行结果见图10-3。
图10-3 顺序布局(Flow Layout) 2.边界布局
边界布局(Border Layout)包括5个区:北区、南区、东区、西区和中区。这5个区在面板上的分布规律是“上北下南,左西右东”。下面是一个边界布局的例子。 package sample; import java.awt.*;
import java.awt.event.WindowAdapter;
26
import java.awt.event.WindowEvent; public class MyBorderLayout { Frame f;
Button east, south, west, north, center;
public static void main(String args[]) {
MyBorderLayout mb = new MyBorderLayout(); mb.go(); }
public void go() {
f = new Frame(\演示\
f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent evt) { f.setVisible(false); f.dispose(); System.exit(0); } });
f.setBounds(0, 0, 300, 300);
f.setLayout(new BorderLayout());
north = new Button(\北\ south = new Button(\南\ east = new Button(\东\ west = new Button(\西\ center = new Button(\中\
f.add(BorderLayout.NORTH, north); f.add(BorderLayout.SOUTH, south); f.add(BorderLayout.EAST, east); f.add(BorderLayout.WEST, west); f.add(BorderLayout.CENTER, center);
f.setVisible(true); } }
程序运行结果见图10-4。
27
图10-4 边界布局(Border Layout) 3.网格布局
网格布局(Grid Layout)把面板分成一个个大小相等的网格,你可以给出网格的行数和列数。下面是一个网格布局的例子。 package sample; import java.awt.*;
import java.awt.event.*;
public class MyGridLayout { private Frame f;
private Button[] btn;
public static void main(String args[]) {
MyGridLayout grid = new MyGridLayout(); grid.go(); }
public void go() {
f = new Frame(\演示\
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent evt) { f.setVisible(false); f.dispose(); System.exit(0); } });
f.setLayout (new GridLayout (3, 3, 10, 10)); btn = new Button[9]; for(int i = 0; i <=8; i++) { int j = i + 1;
btn[i] = new Button(\ f.add(btn[i]); }
// f.pack();
f.setSize(100, 100); f.setVisible(true);
28
} }
程序运行结果见图10-5。
图10-5 网格布局(Grid Layout) 4.卡片布局
卡片布局(Card Layout)把每个组件看作一张卡片,好像一副扑克牌,它们叠在一起,每次只有最外面的一个组件可以被看到。 package sample; import java.awt.*;
import java.awt.event.*;
public class MyCardLayout {
public static void main(String args[]) { new MyCardLayout().go(); }
public void go() {
final Frame f = new Frame(\演示\ f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent evt) { f.setVisible(false); f.dispose(); System.exit(0); } });
f.setSize(300, 100);
f.setLayout(new CardLayout());
final Frame f1 = f;
for(int i = 1; i <= 5; ++i) {
Button b = new Button(\ b.setSize(100, 25);
b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { CardLayout cl = (CardLayout)f1.getLayout(); cl.next(f1);
29
} } );
f.add(b, \ }
f.setVisible(true); } }
程序运行结果见图10-6。
图10-6 卡片布局(Card Layout)
单击按钮Button1后,显示下一个按钮Button2,依此类推。 5.网格包布局
网格包 (GridBag)布局是基于网格布局之上的一种改进。和基本的网格布局不同的是,一个组件可以跨越一个或多个网格,这样一来增加了布局的灵活性。为了处 理网格的跨越性,我们可以使用GridBagConstraints类。有兴趣的读者可以参考Java API来了解它。 package sample; import java.awt.*; import java.util.*;
import java.awt.event.*;
public class MyGridBagLayout extends Panel { protected void makebutton(String name, GridBagLayout gridbag, GridBagConstraints c) { Button button = new Button(name); gridbag.setConstraints(button, c); add(button); }
public void go() {
GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); setFont(new Font(\ setLayout(gridbag);
c.fill = GridBagConstraints.BOTH; c.weightx = 1.0;
makebutton(\ makebutton(\ makebutton(\
30
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Java语言程序设计习题答案(清华大学出版杜)张思民版-1-12章答案(6)在线全文阅读。
相关推荐: