
java课程总结第12章.ppt
59页第十二章,Swing 组件,.,,12.1Swing组件概述 12.2窗口 12.3标签 12.4按钮 12.5单选按钮和复选框 12.6文本编辑组件 12.7列表框和组合框 12.8菜单,.,12.1Swing组件概述,早期的JDK版本中提供了Java抽象窗口工具集(Abstract Window Toolkit, AWT),其目的是为程序员创建图形用户界面提供支持,但是AWT功能有限,因此在后来的JDK版本中,又提供了功能更强的Swing类库12.1Swing组件概述,Swing包含了大部分与AWT对应的组件 多数Swing组件以字母“J”开头 Swing组件的用法与AWT组件基本相同,大多数AWT组件只要在其类名前加J即可转换成Swing组件 java.swing中类的继承关系,,.,,Swing组件与AWT组件最大的不同是,Swing组件在实现时不包含任何本地代码,因此Swing组件可以不受硬件平台的限制,而具有更多的功能 Swing组件比AWT组件拥有更多的功能 Swing库是抽象窗口工具AWT库的扩展,提供了比AWT更多的特性和工具,用于建立更复杂的图形用户界面Swing与AWT的异同:,.,12.2窗口,基于Swing组件的图形用户界面,采用JFrame框架作为容器。
JFrame类是从Frame类派生的JFrame的构造方法,.,JFrame的成员方法,.,,每个JFrame窗口都有一个内容窗格(contant pane),窗口中除菜单之外的所有组件都放在其内容窗格中 要将组件添加到其内容窗格中,首先用JFrame类的getContentPane()方法获得其缺省的内容窗格,getContentPane()方法的返回类型是java.awt.Container,然后使用add()方法将组件添加到其内容窗格中这与在Frame窗口中直接使用add()方法添加组件明显不同12.3标签,Swing中的标签组件JLabel与AWT中标签组件Label相似,可以显示文本 JLabel组件还可以显示图标,当鼠标的指针移动到标签上时,还会显示一段提示信息JLabel的构造方法,.,JLabel的成员方法,.,12.4按钮,在Swing中,所有按钮都是由AbstractButton类派生的 Swing中按钮的功能较AWT中的按钮功能更加强大,包括给按钮添加图像、使用快捷键以及设置按钮的对齐方式,还可以将多个图像分配给一个按钮以处理鼠标在按钮上的停留等JButton类的构造方法,.,12.5单选按钮和复选框,在Swing中,单选按钮JRadionButton用来显示一组互斥的选项。
在同一组单选按钮中,任何时候最多只能有一个按钮被选中一旦选中一个单选按钮,以前选中的按钮自动变为未选中状态要让多个单选按钮位于同一组,必须使用按钮组类ButtonGroupButtonGroup是java.swing包中的类,但不是JComponent的子类 调用ButtonGroup类的add()方法可以将一个按钮添加到一个ButtonGroup对象中JRadioButton类的构造方法,.,Swing单选按钮举例,编程实现:窗口中有标题为Plain、Bold和Italic的3个单选按钮和1个标签,当选择任一单选按钮时,标签中显示该单选按钮被选中的信息Swing单选按钮举例,import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JRadio extends JFrame private JLabel lbl; private JRadioButton pla, bol,ita; private ButtonGroup buttonG; public JRadio() super(JRadioButton Example); Container c = getContentPane(); c.setLayout( new FlowLayout() ); lbl=new JLabel(Plain is selected); pla=new JRadioButton(Plain,true); bol=new JRadioButton(Bold,false); ita=new JRadioButton(Italic,false);,.,Swing单选按钮举例,c.add(pla); c.add(bol); c.add(ita); c.add(lbl); pla.addItemListener(new Handler1()); bol.addItemListener(new Handler1()); ita.addItemListener(new Handler1()); buttonG = new ButtonGroup(); buttonG.add(pla); buttonG.add(bol); buttonG.add(ita); setSize(200,150); setVisible(true); public static void main(String args) JRadio app = new JRadio(); app.addWindowListener(new Handler2()); ,.,Swing单选按钮举例,class Handler1 implements ItemListener public void itemStateChanged(ItemEvent e) if(e.getSource()==pla) lbl.setText(Plain is selected); else if(e.getSource()==bol) lbl.setText(Bold is selected); else lbl.setText(Italic is selected); static class Handler2 extends WindowAdapter public void windowClosing(WindowEvent e) System.exit( 0 ); ,.,,(a)初始界面 (b)选中Bold后的界面,.,复选框JCheckBox,复选框JCheckBox用来显示一组选项。
在一组复选框中,可以同时选中多个复选框,也可以不选中任何复选框JCheckBox类的构造方法,.,Swing复选框举例,编程实现:窗口中有标题为Plain和Bold的2个复选框及2个标签,在第1个标签中显示Plain复选框是否被选中的信息,在第2个标签中显示Bold复选框是否被选中的信息Swing复选框举例,import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JCheck extends JFrame private JLabel lblp,lblb; private JCheckBox pla,bol; public JCheck() super(JCheckBox); Container c = getContentPane(); c.setLayout( new FlowLayout() ); pla=new JCheckBox(Plain,true); bol=new JCheckBox(Bold,false); lblp=new JLabel(Plain is selected); lblb=new JLabel(Bold is not selected);,.,Swing复选框举例,c.add(pla); c.add(bol); c.add(lblp); c.add(lblb); pla.addItemListener(new Handler1()); bol.addItemListener(new Handler1()); setSize(200,150); setVisible(true); public static void main(String args) JCheck app = new JCheck(); app.addWindowListener(new Handler2()); ,.,Swing复选框举例,class Handler1 implements ItemListener public void itemStateChanged(ItemEvent e) if(e.getSource()==pla) if (e.getStateChange()==ItemEvent.SELECTED) lblp.setText(Plain is selected); else lblp.setText(Plain is not selected); if(e.getSource()==bol) if (e.getStateChange()==ItemEvent.SELECTED) lblb.setText(Bold is selected); else lblb.setText(Italic is selected); static class Handler2 extends WindowAdapter public void windowClosing(WindowEvent e) System.exit( 0 ); ,.,.,(a)初始界面 (b)选中Bold后的界面 (c)Plain和Bold都未选中时的界面,.,12.6文本编辑组件,Swing文本编辑组件有文本行、密码行和文本区。
文本行JTextField是一个单行文本编辑框,用于输入1行文字,用法与TextField相同 文本行是由java.awt包中的JTextField类来创建JTextField类的构造方法,.,JTextField类的成员方法,.,,密码行JPasswordField是JTextField的子类,用于编辑作为密码的1行文本在其中输入字符时,不显示原字符,而显示“*” 文本区JTextArea是一个多行文本编辑框,其基本操作与JTextField类似,但增加了滚动条功能JTextArea类的构造方法,.,JTextArea类的成员方法,.,12.7列表框和组合框,当供选择的选项较少时,通常使用单选按钮和复选框但当选项很多时,可以使用列表框JList或组合框JComboBox 列表框JList能容纳并显示一组选项,从中可以选择1项或多项JList类的构造方法,.,JList类的成员方法,.,,组合框JComboBox由一个文本行和一个列表框组成组合框通常显示形式是右边带有下拉箭头的文本行,列表框是隐藏的,单击右边的下拉箭头才可以显示列表框既可以在组合框的文本行中直接输入数据,也可以从其列表框中选择数据项,被选择的数据项显示在文本行中。
JComboBox类的构造方法,.,JComboBox类的成员方法,.,Swing组合框举例,编程实现:窗口中有1个组合框和1个标签,当选择组合框中某选项时,在标签中显示所选中的选项信息Swing组合框举例,import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.eve。
