请完成下列Java程序:用一个边框布局来安排一个工具栏和一个卡片布局。工具栏可浮动,包括两个按钮,一个向前一个向后控制卡片的显示;卡片布局包括3张卡片,分别标识为card1、card2、card3。 注意;请勿改动main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。 源程序代码文件清单如下: import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.LineBorder; public class ex20_2 { private static CardLayout cl=new CardLayout(); private static JPanel cp=new JPanel(); public static void main(String args[]) { JFrame jf=new JFrame(); jf.setTitle("ex20_2"); Container c=jf.getContentPane(); JToolBar jtb=new JToolBar(); JButton btnNext=new JButton(new Imagelcon("next.gif")); JButton btnPre=new JButton(new ImageIcon("back.gif")); jtb.add(btnPre); jtb.add(btnNext); cp.setLayout(c1); Dimension dim=new Dimension(150,80); cp.setPreferredSize(dim); cp.setBorder(new LineBorder(Color.BLACK)); cp.add(new JLabel("card1",JLabel.CENTER),"card1"); cp.add(new JLabel("card2",JLabel.CENTER),"card2"); cp.add(new JLabel("card3",JLabel.CENTER),"card3"); c.add(jtb,BorderLayout.NORTH); c.add(cp,BorderLayout.CENTER); ActionListener al=new ActionResponse(); ______; ______; if.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { System.exit(0); } }); jf.pack(); jf.setVisible(true); } static class ActionResponse implements ActionListener { public void actionPerformed(ActionEvent ae) { if(ae.getActionCommand().equals("next")) c1.next(cp); else c1.previous(cp); } } }
参考答案:
解析:btnNext.addActionListener(al)btnPre.addActionListener(al) 本题主要考查工具栏和卡片布局的基本使用方法。解题关键是熟悉工具栏的设计和卡片布局的管理,熟悉事件处理机制,会制作图像按钮,会制作自己的事件监听器类。本题中,第1个空和第2个空都是需要填入注册监听器的语句,这里向前和向后两个按钮共用一个监听器,此监听器对象负责判断和处理相应的操作。