Java设计用户注册界面.ppt
任务9设计用户注册界面,学习情境二(考试系统单机版),学习目标,掌握JComboBox、JCheckBoxl、JRadioButton组件的创建及ItemEvent事件处理。掌握JList组件的创建及ListSelectionEvent事件的处理。熟悉网格包布局管理器、盒式布局的使用及其多种布局方式的综合应用。,9.1 任务描述,9.2 技术要点,选择性组件 选择事件 复杂布局管理器,选择性组件组合框(JComboBox类),选择性组件列表框(JList类),选择性组件单选按钮(JRadioButton类),选择性组件复选框(JCheckbox类),选择事件ItemEvent类,举例 ItemeventDemo.java,1 import java.awt.*;2 import java.awt.event.*;3 import javax.swing.*;4 public class ItemeventDemo extends JFrame implements ItemListener,ActionListener5 JRadioButton opt1;6 JRadioButton opt2;7 ButtonGroup btg;8 JTextArea ta;9 JComboBox comb;10 JLabel sex,city;11 public ItemeventDemo(String title)12 super(title);13 setLayout(new FlowLayout(FlowLayout.LEFT);14 sex=new JLabel(性 别:);15 city=new JLabel(籍 贯:);16 opt1=new JRadioButton(男);17 opt2=new JRadioButton(女);18 btg=new ButtonGroup();19 btg.add(opt1);20 btg.add(opt2);21 opt1.addItemListener(this);22 opt2.addItemListener(this);,23 ta=new JTextArea(8,35);24 comb=new JComboBox();25 comb.addItem(北 京);26 comb.addItem(上 海);27 comb.addItem(南 京);28 comb.addItem(广 州);29 comb.addItem(成 都);30 comb.addItem(昆 明);31 comb.addItemListener(this);32 comb.addActionListener(this);33 getContentPane().add(sex);34 getContentPane().add(opt1);35 getContentPane().add(opt2);36 getContentPane().add(city);37 getContentPane().add(comb);38 getContentPane().add(ta);39 setTitle(title);40 setSize(300,250);41 setVisible(true);42,举例 ItemeventDemo.java(续),举例 ItemeventDemo.java(续),43 public static void main(String args)44 new ItemeventDemo(Itemevent Demo);45 46/ItemEvent事件发生时的处理操作47 public void itemStateChanged(ItemEvent e)48 String str;49 if(e.getSource()=opt1)/如果是opt1被选择50 ta.append(n性 别:+男);51 else if(e.getSource()=opt2)/如果opt2被选择52 ta.append(n性 别:+女);53 if(e.getSource()=comb)54 str=comb.getSelectedItem().toString();55 ta.append(n籍 贯:+str+=ItemEvent事件);56 57 58 public void actionPerformed(ActionEvent e)59 String str;60 if(e.getSource()=comb)61 str=comb.getSelectedItem().toString();62 ta.append(n籍 贯:+str+=ActionEvent事件);63 64 65,运行效果,举例CheckBoxDemo.java,1 import java.awt.*;2 import java.awt.event.*;3 import javax.swing.*;4 public class CheckBoxDemo extends JFrame implements ItemListener5 private JTextField field;6 private JCheckBox bold,italic;7 private int valBold=Font.PLAIN;8 private int valItalic=Font.PLAIN;9 public CheckBoxDemo()10 super(JCheckBox Demo);11 Container container=getContentPane();12 container.setLayout(new FlowLayout();13 field=new JTextField(2008,北京欢迎您!,20);14 field.setFont(new Font(隶书,Font.PLAIN,14);15 container.add(field);16 bold=new JCheckBox(Bold);,17 container.add(bold);18 italic=new JCheckBox(Italic);19 container.add(italic);20 bold.addItemListener(this);21 italic.addItemListener(this);22 setSize(280,100);23 setVisible(true);24 25 public void itemStateChanged(ItemEvent event)26 if(event.getSource()=bold)27 valBold=bold.isSelected()?Font.BOLD:Font.PLAIN;28 if(event.getSource()=italic)29 valItalic=italic.isSelected()?Font.ITALIC:Font.PLAIN;30 field.setFont(new Font(隶书,valBold+valItalic,14);31 32 public static void main(String args)33 new CheckBoxDemo();34 35,选择事件 ListSelectionEvent类,首先必须声明实现监听者对象的类接口ListSelectionListener,并通过JList类的addListSelectionListener()方法注册文本框的监听者对象,在ListSelectionListener接口的valueChanged(ListSelectionEvent e)方法体中写入有关代码,就可以响应ListSelectionEvent事件。,例9-3 JListDemo.java,1 import java.awt.*;2 import java.awt.event.*;3 import javax.swing.*;4 import javax.swing.event.*;5 public class JListDemo extends JFrame implements ListSelectionListener6 JList list=null;7 JLabel label=null;8 String s=宝马,奔驰,奥迪,本田,皇冠,福特,现代;9 public JListDemo()10 JFrame f=new JFrame(JList Demo);11 Container contentPane=f.getContentPane();12 contentPane.setLayout(new BorderLayout(0,15);13 label=new JLabel();14 list=new JList(s);15 list.setVisibleRowCount(5);16 list.setBorder(BorderFactory.createTitledBorder(汽车品牌:);,17 list.addListSelectionListener(this);18 contentPane.add(label,BorderLayout.NORTH);19 contentPane.add(new JScrollPane(list),BorderLayout.CENTER);20 f.setSize(300,200);21 f.setVisible(true);22 23 public static void main(String args)24 new JListDemo();25 26 public void valueChanged(ListSelectionEvent e)27 int tmp=0;28 String stmp=您喜欢的汽车品牌有:;29 int index=list.getSelectedIndices();30 for(int i=0;i index.length;i+)31 tmp=indexi;32 stmp=stmp+stmp+;33 34 label.setText(stmp);35 36,运行效果,复杂布局管理器 网格包布局(GridBagLayout类),举例 GridBagLayoutDemo.java,1 import java.awt.*;2 import javax.swing.*;3 public class GridBagLayoutDemo extends JFrame 4 protected void addbutton(String name,GridBagLayout gridbag,5 GridBagConstraints c)6 JButton button=new JButton(name);7 gridbag.setConstraints(button,c);8 getContentPane().add(button);9 10 public GridBagLayoutDemo()11 GridBagLayout gridbag=new GridBagLayout();12 GridBagConstraints c=new GridBagConstraints();13 setFont(new Font(SansSerif,Font.PLAIN,14);14 setLayout(gridbag);15 c.fill=GridBagConstraints.BOTH;16 c.weightx=1.0;17 addbutton(Button1,gridbag,c);18 addbutton(Button2,gridbag,c);19 addbutton(Button3,gridbag,c);20 c.gridwidth=GridBagConstraints.REMAINDER;/最后一个组件21 addbutton(Button4,gridbag,c);22 c.weightx=0.0;/恢复默认值44,23 addbutton(Button5,gridbag,c);24 c.gridwidth=GridBagConstraints.RELATIVE;/倒数第二个组件25 addbutton(Button6,gridbag,c);26 c.gridwidth=GridBagConstraints.REMAINDER;/最后一个组件27 addbutton(Button7,gridbag,c);28 c.gridwidth=1;/恢复默认值29 c.gridheight=2;/占据两行30 c.weighty=1.0;31 addbutton(Button8,gridbag,c);32 c.weighty=0.0;/恢复默认值33 c.gridwidth=GridBagConstraints.REMAINDER;/最后一个组件34 c.gridheight=1;/恢复默认值35 addbutton(Button9,gridbag,c);36 addbutton(Button10,gridbag,c);37 38 public static void main(String args)39 GridBagLayoutDemo window=new GridBagLayoutDemo();40 window.setTitle(GridBagLayout Demo);41 window.pack();42 window.setVisible(true);43,复杂布局管理器 盒式布局(BoxLayout类),3种隐藏的组件做间隔:Strut(支柱):用来在组件之间插入固定的空间。Glue(胶水):用来控制一个框布局内额外的空间。Ridid area(硬区域):用来生成一个固定大小的区域。,举例 BoxLayOutDemo.java,1 import java.awt.*;2 import javax.swing.*;3 public class BoxLayOutDemo 4 public static void main(String args)5 MyFrame f=new MyFrame();6 f.setVisible(true);7 8 9 class MyFrame extends JFrame10 public MyFrame()11 super(BoxLayout DEMO);12 final int NUM=2;13 setBounds(500,350,300,200);14 Container c=getContentPane();15 c.setLayout(new BorderLayout(20,20);/设置边框布局16 Box boxes=new Box4;/设置盒式布局17 boxes0=Box.createHorizontalBox();18 boxes1=Box.createVerticalBox();19 boxes3=Box.createHorizontalBox();,20 boxes2=Box.createVerticalBox();21 boxes0.add(Box.createHorizontalGlue();22 boxes1.add(Box.createVerticalGlue();23 boxes2.add(Box.createVerticalStrut(20);24 boxes3.add(Box.createHorizontalStrut(30);25 for(int i=0;iNUM;i+)26 boxes0.add(new JButton(boxes0:+i);27 for(int i=0;iNUM;i+)28 boxes1.add(new JButton(boxes1:+i);29 for(int i=0;iNUM;i+)30 boxes2.add(new JButton(boxes2:+i);31 for(int i=0;iNUM;i+)32 boxes3.add(new JButton(boxes3:+i);33 c.add(boxes0,BorderLayout.NORTH);34 c.add(boxes1,BorderLayout.WEST);35 c.add(boxes2,BorderLayout.EAST);36 c.add(boxes3,BorderLayout.SOUTH);37 38,运行效果,9.3 任务实施,