以下窗口程序演示了CardLayout布局方式,请把程序改为由测试类、视图类、监视器类结构组成。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Sy4_4 implements ActionListener {
JFrame jf;
JPanel cardPan, btPan;
CardLayout card;
JButton bt1,bt2,bt3,bt4;
public Sy4_4() {
jf = new JFrame();
cardPan = new JPanel();
btPan = new JPanel();
card = new CardLayout(5,10);
bt1 = new JButton("第一页");
bt2 = new JButton("上一页");
bt3 = new JButton("下一页");
bt4 = new JButton("最后页");
bt1.addActionListener(this);
bt2.addActionListener(this);
bt3.addActionListener(this);
bt4.addActionListener(this);
jf.setLayout(null);
jf.setTitle("卡片式布局");
jf.setSize(350,300);
jf.setResizable(false);
cardPan.setLayout(card);
cardPan.setBounds(10,10,320,200);
for(int i=1; i<=4; i++) {
cardPan.add(new JLabel("第"+i+"页"));
}
btPan.setLayout(new GridLayout(1,4));
btPan.setBounds(10,220,320,25);
btPan.add(bt1);
btPan.add(bt2);
btPan.add(bt3);
btPan.add(bt4);
jf.add(cardPan);
jf.add(btPan);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
JButton bt = (JButton)e.getSource();
if(bt==bt1)
card.first(cardPan);
else if(bt==bt2)
card.previous(cardPan);
else if(bt==bt3)
card.next(cardPan);
else
card.last(cardPan);
}
public static void main(String[] args) {
new Sy4_4();
}
}