《java课程总结第12章.ppt》由会员分享,可在线阅读,更多相关《java课程总结第12章.ppt(59页珍藏版)》请在三一办公上搜索。
1、第十二章,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组件只要在其
2、类名前加J即可转换成Swing组件。,java.swing中类的继承关系,Swing组件与AWT组件最大的不同是,Swing组件在实现时不包含任何本地代码,因此Swing组件可以不受硬件平台的限制,而具有更多的功能。Swing组件比AWT组件拥有更多的功能。Swing库是抽象窗口工具AWT库的扩展,提供了比AWT更多的特性和工具,用于建立更复杂的图形用户界面。,Swing与AWT的异同:,12.2窗口,基于Swing组件的图形用户界面,采用JFrame框架作为容器。JFrame类是从Frame类派生的。,JFrame的构造方法,JFrame的成员方法,每个JFrame窗口都有一个内容窗格(co
3、ntant pane),窗口中除菜单之外的所有组件都放在其内容窗格中。要将组件添加到其内容窗格中,首先用JFrame类的getContentPane()方法获得其缺省的内容窗格,getContentPane()方法的返回类型是java.awt.Container,然后使用add()方法将组件添加到其内容窗格中。这与在Frame窗口中直接使用add()方法添加组件明显不同。,12.3标签,Swing中的标签组件JLabel与AWT中标签组件Label相似,可以显示文本。JLabel组件还可以显示图标,当鼠标的指针移动到标签上时,还会显示一段提示信息。,JLabel的构造方法,JLabel的成员方
4、法,12.4按钮,在Swing中,所有按钮都是由AbstractButton类派生的。Swing中按钮的功能较AWT中的按钮功能更加强大,包括给按钮添加图像、使用快捷键以及设置按钮的对齐方式,还可以将多个图像分配给一个按钮以处理鼠标在按钮上的停留等。,JButton类的构造方法,12.5单选按钮和复选框,在Swing中,单选按钮JRadionButton用来显示一组互斥的选项。在同一组单选按钮中,任何时候最多只能有一个按钮被选中。一旦选中一个单选按钮,以前选中的按钮自动变为未选中状态。,要让多个单选按钮位于同一组,必须使用按钮组类ButtonGroup。ButtonGroup是java.swi
5、ng包中的类,但不是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
6、 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
7、);,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(S
8、tring 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
9、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复选
10、框是否被选中的信息。,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 J
11、CheckBox(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 a
12、pp=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
13、)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文本编辑组件有文本行、密码行和文本区。文本行JTextFi
14、eld是一个单行文本编辑框,用于输入1行文字,用法与TextField相同。文本行是由java.awt包中的JTextField类来创建。,JTextField类的构造方法,JTextField类的成员方法,密码行JPasswordField是JTextField的子类,用于编辑作为密码的1行文本。在其中输入字符时,不显示原字符,而显示“*”。文本区JTextArea是一个多行文本编辑框,其基本操作与JTextField类似,但增加了滚动条功能。,JTextArea类的构造方法,JTextArea类的成员方法,12.7列表框和组合框,当供选择的选项较少时,通常使用单选按钮和复选框。但当选项很多
15、时,可以使用列表框JList或组合框JComboBox。列表框JList能容纳并显示一组选项,从中可以选择1项或多项。,JList类的构造方法,JList类的成员方法,组合框JComboBox由一个文本行和一个列表框组成。组合框通常显示形式是右边带有下拉箭头的文本行,列表框是隐藏的,单击右边的下拉箭头才可以显示列表框。既可以在组合框的文本行中直接输入数据,也可以从其列表框中选择数据项,被选择的数据项显示在文本行中。,JComboBox类的构造方法,JComboBox类的成员方法,Swing组合框举例,编程实现:窗口中有1个组合框和1个标签,当选择组合框中某选项时,在标签中显示所选中的选项信息。
16、,Swing组合框举例,import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;public class JCom extends JFrame private JComboBox lst;private JLabel lbl;private Object cities=北京市,上海市,天津市,重庆市,郑州市,太原市,石家庄市;public JCom()super(JComboBox);Container c=getContentPane();c.setLayout(ne
17、w FlowLayout();lst=new JComboBox(cities);lst.setMaximumRowCount(4);lbl=new JLabel(请从组合框中选择);c.add(lst);c.add(lbl);lst.addItemListener(new Handler1();setSize(300,150);setVisible(true);,Swing组合框举例,public static void main(String args)JCom app=new JCom();app.addWindowListener(new Handler2();class Handle
18、r1 implements ItemListener public void itemStateChanged(ItemEvent e)lbl.setText(您选中了:+lst.getSelectedItem();static class Handler2 extends WindowAdapter public void windowClosing(WindowEvent e)System.exit(0);,(a)初始界面(b)显示列表框的界面(c)选中“天津市”后的界面,12.8 菜单,在Java中,一个完整的菜单由3种菜单类创建:菜单栏类JMenuBar菜单类JMenu菜单项类JMen
19、uItem,12.8 菜单,菜单栏(JMenuBar)是窗口中用于容纳菜单(JMenu)的容器。JMenuBar提供的add()方法用来添加菜单,一个菜单栏通常可以添加多个菜单。菜单栏不支持事件监听器,在菜单栏区域所产生的所有事件都会被菜单栏自动处理。,JMenuBar类的方法,JMenu类,菜单(JMenu)是一组菜单(JMenuItem)的容器或另一个菜单的容器,每个菜单有一个标题。JMenu类提供的add()方法用来添加菜单项或另一个菜单。一个菜单中加入另一个菜单,构成二级子菜单。,JMenu类的构造方法,JMenu类的成员方法,JMenuItem类,菜单项(JMenuItem)是组成菜
20、单的最小单位,在菜单项上可以注册ActionEvent事件监听器。当单击菜单项时,执行actionPerformed()方法。,JMenuItem类的构造方法,Swing菜单举例,编程实现:窗口中有1个菜单栏和1个标签,菜单栏中包含color和exit 2个菜单。在color菜单中包含green、yellow和blue 3个菜单项,当选择某一菜单项时,使标签标题更改为所选择的颜色。在exit菜单中仅包含1个菜单项“close window”,当选择该菜单项时,将结束程序运行。,Swing菜单举例,import javax.swing.*;import java.awt.event.*;impo
21、rt java.awt.*;public class MyMenu extends JFrame private JLabel lbl;private JMenuBar mb;private JMenu col,ext;private JMenuItem gre,yel,blu,clo;public MyMenu()super(MyMenu);Container c=getContentPane();mb=new JMenuBar();col=new JMenu(color);ext=new JMenu(exit);gre=new JMenuItem(green);yel=new JMenuI
22、tem(yellow);blu=new JMenuItem(blue);clo=new JMenuItem(close window);,Swing菜单举例,gre.addActionListener(new Handler1();yel.addActionListener(new Handler1();blu.addActionListener(new Handler1();clo.addActionListener(new Handler1();mb.add(col);mb.add(ext);col.add(gre);col.add(yel);col.add(blu);ext.add(cl
23、o);setJMenuBar(mb);lbl=new JLabel(Menu Example);add(lbl);setSize(200,150);setVisible(true);,Swing菜单举例,public static void main(String args)MyMenu app=new MyMenu();class Handler1 implements ActionListener public void actionPerformed(ActionEvent e)JMenuItem mi=(JMenuItem)e.getSource();if(mi=gre)lbl.setForeground(Color.green);if(mi=yel)lbl.setForeground(Color.yellow);if(mi=blu)lbl.setForeground(Color.blue);if(mi=clo)System.exit(0);,(a)初始界面(b)color菜单,
链接地址:https://www.31ppt.com/p-5436235.html