1、第9章 Swing程序设计本讲提纲GUI程序设计简介01Swing容器02布局管理器03Java事件处理04本讲提纲本讲提纲常用Swing组件专题应用:GUI的设计与实现0605第1节 GUI程序设计简介 图形用户界面(Graphical User Interface,GUI)是指采用图形方式显示计算机操作环境的用户接口,它能够让用户和程序之间方便友好地进行交互。Java API提供了AWT和Swing两个包来实现java图形用户界面的构建。JavaJava提供了非常强大而丰富的图形用户界面开发包。它们包含哪些组提供了非常强大而丰富的图形用户界面开发包。它们包含哪些组件,如何利用它们使界面设计
2、越来越美观?件,如何利用它们使界面设计越来越美观?第1节 GUI程序设计简介java.swingjava.swing包包是在是在AWTAWT组件基础上构建的,是组件基础上构建的,是java2java2中的一个标准包。中的一个标准包。与具体的操作系统无关,真正与具体的操作系统无关,真正做到平台独立。做到平台独立。在构建界面时在构建界面时 ,不要将两种组件混用。,不要将两种组件混用。java.awtjava.awt包包是是javajava处理图形用户界面的初始途径。处理图形用户界面的初始途径。创建的用户界面在不同操作平台上有不创建的用户界面在不同操作平台上有不同的表现。同的表现。为了实现为了实现“
3、一次编写,到处运行一次编写,到处运行”的特的特点,使得可用组件数量不多,功能较弱。点,使得可用组件数量不多,功能较弱。第1节 GUI程序设计简介 从图中可以看出从图中可以看出几乎所有的几乎所有的AWTAWT组件对应有功能更强的组件对应有功能更强的swingswing组件组件 Java.awt.FrameJava.awt.Frame-javax.swing.JFramejavax.swing.JFrameSwingSwing组件都是组件都是AWTAWT的容器类(的容器类(ContainerContainer)的直接子类和间接子类)的直接子类和间接子类组件类(组件类(ComponentCompon
4、ent)是一个抽象类,不能直接使用。)是一个抽象类,不能直接使用。组件:组件:是是javajava图形用户界面的最基本组成部分。图形用户界面的最基本组成部分。容器:容器:是组件类的子类,它可以容纳其他组件,也就是说在容器类组件是组件类的子类,它可以容纳其他组件,也就是说在容器类组件上可以放置标签,按钮等组件。上可以放置标签,按钮等组件。图图9-1 9-1 java.awtjava.awt包及包及javax.swingjavax.swing包主要的类与继承关系包主要的类与继承关系 第1节 GUI程序设计简介Swing组件从功能上可分为:顶层容器:JFrame,JApplet,JDialog,Jw
5、indow。中间容器:JPanel,JScrollPane,JSplitPane,JtoolBar特殊容器:在GUI上起特殊作用的中间层,如:JInternalFrame,JLayeredPane。基本控件:实现人机交互的组件,如:JButton,JComboBox,JList,JMenu,JSlider,JTextField等。不可编辑信息的显示:向用户显示不可编辑信息的组件,如:JLabel,JProgressBar,ToolTip。可编辑信息的显示:向用户显示能被编辑的格式化信息的组件,如:JColorChooser,JFileChooser,JTable,JTextArea。第2节 S
6、wing 容器顶层容器中间容器登陆取消请输入用户名:基本控件 在图9-1中似乎有很多熟悉的名字,例如:JDialog(对话框),JButton(按钮),JMenuBar(菜单栏)等,这些组件怎样才能在图形用户界面上显示,它们之间的排放是否有层次关系?第2节 Swing 容器 在在SwingSwing组件中,能够作最底层组件中,能够作最底层“底板底板”容器的组件只能是四容器的组件只能是四个顶层容器组件。个顶层容器组件。JFrameJFrame是最基本、最常用的是窗口容器,它是带有标题行和控制是最基本、最常用的是窗口容器,它是带有标题行和控制按钮的独立窗口。按钮的独立窗口。JwindowJwind
7、ow是不带有标题行和控制按钮的窗口,通常很少使用。是不带有标题行和控制按钮的窗口,通常很少使用。JAppletJApplet是提供是提供JavaJava小程序的窗口界面形式。小程序的窗口界面形式。JDialogJDialog提供对话框的窗口形式。提供对话框的窗口形式。第2节 Swing 容器 JFrame容器 设计设计GUI界面所需要的两个基本包界面所需要的两个基本包将将button1button1对象加入到对象加入到myWindowmyWindow窗体对象中。在窗体对象中。在JDK5JDK5后的版本后的版本中也可以写成中也可以写成 myWindow.addmyWindow.add(butto
8、n1)(button1)创建创建JFrameJFrame顶层容器对象顶层容器对象 创建创建JButtonJButton基本控件对象基本控件对象 调用调用JFrame的两个方法的两个方法指定窗体大小并显示窗体指定窗体大小并显示窗体第2节 Swing 容器JFramecontent pane JMenu Bar 在创建JFrame对象时会默认添加一个内容窗格(content pane),在JDK 5.0后,JFrame只是从java.awt.Container继承了add、setLayout和remove三个方法,并不是全部的方法。myWindow.setBackground(Color.yell
9、ow);myWindow.getContentPane().setBackground(Color.yellow);本书仍采用向内容窗格添加组件的方法myWindow.getContentPane().add(button1);等价于Container cp=myWindow.getContentPane();cp.add(button1);第2节 Swing 容器 程序运行后,点击窗口界面右上角的“”按钮时,窗口只是被隐藏起来,但仍在后台运行。若要真正关闭窗口,可调用JFrame的setDefaultCloseOperation(int operation)方法实现,operation参数常
10、有以下四种值:myWindow.setDefaultCloseOperation(0);表示不执行任何操作,也即不会关闭窗口 myWindow.setDefaultCloseOperation(1);隐藏窗口 myWindow.setDefaultCloseOperation(2);隐藏并释放窗口,当最后一个窗口被释放后,则程序也随之运行结束 myWindow.setDefaultCloseOperation(3);直接关闭应用程序 第2节 Swing 容器JFrame类的常用方法 分析以下程序段,若实现分析以下程序段,若实现9-1程序功能,程序功能,main方法该如何实现?方法该如何实现?p
11、ublic class FirstFrameDemo1 extends JFrame public FirstFrameDemo1()super(第一个窗体);JButton button1=new JButton(EXIT);Container cp=getContentPane();cp.add(button1);pack();setVisible(true);setDefaultCloseOperation(this.EXIT_ON_CLOSE);/main方法作答主观题第2节 Swing 容器 JPanel容器 面板(JPanel)容器可以嵌套,但是不能独立于顶层容器而单独显示。JPa
12、nel类常用方法 第2节 Swing 容器程序FirstPanelDemo片段实例化两个面板对象实例化两个面板对象实例化两个按钮对象实例化两个按钮对象将两个按钮分别添加到面板上将两个按钮分别添加到面板上设置两个面板的颜色设置两个面板的颜色将面板添加到窗体上将面板添加到窗体上第3节 布局管理器 刚刚实例中,两个按钮以水平居中方式显示在面板上,两个面板却是以上宽下窄的方式被放置到窗体中,为什么会出现这种排放方式?如果按钮靠左对齐,或者面板按照左右两边放置,可以吗?用什么方法可以随心所欲的排放各种组件呢?Java提供了布局管理器(LayoutManager)来管理组件在容器中的位置。第3节 布局管理
13、器布局管理器的特征布局是容器的特征,每个容器类都有一个默认的布局管理器。顶层容器JFrame或者内容窗格的默认布局管理器是BorderLayout。JPanel和JApplet的默认布局是FlowLayout。布局管理器的使用 直接使用默认的布局管理器。在组件加入到容器之前,采用setLayout(LayoutManager manager)方法改变容器的默认布局。第3节 布局管理器 FlowLayout布局管理器 FlowLayout(流式布局)是将容器内的组件像水流一样往某方向流动(排列),遇到障碍(边界)时便折回,继续从下一行开始排列。第3节 布局管理器程序FlowLayoutDemo片
14、段改变窗口大小Container cp=Container cp=myWindow.getContentPanemyWindow.getContentPane();();cp.setLayoutcp.setLayout(new(new FlowLayoutFlowLayout(FlowLayout.LEFTFlowLayout.LEFT,10,20);,10,20);for(int for(int i i=1;=1;i i=10;=10;i i+)+)cp.addcp.add(new(new JButtonJButton(Button+(Button+i i););下列说法中,错误的一项是()
15、使用FlowLayout在容器中放置组件的策略是:从上到下、从左到右使用FlowLayout 进行布局管理时,组件的大小采用的是其最佳尺寸使用FlowLayout进行布局管理时,不能调节组件之间的距离用FlowLayout 管理的组件随容器大小变化的变化规律是:组件大小不变,组件之间的相对位置改变ABCD提交单选题第3节 布局管理器BorderLayout布局管理器BorderLayout(边框布局)将容器划分为五个区域。东(EAST)、南(SOUTH)、西(WEST)、北(NORTH)、中(CENTER)。添加组件时需要指明放置的区域,若没有指定任何区域,则默认放置到中间。某个区域没有放置组
16、件,则其他组件将占据它的空间。在同一个区域内放置多个组件,则最后放入的组件会覆盖前面的组件。第3节 布局管理器 cp.setLayout(new BorderLayout();cp.add(b1,BorderLayout.EAST);cp.add(b2,BorderLayout.WEST);cp.add(b3,BorderLayout.SOUTH);cp.add(b4,BorderLayout.NORTH);cp.add(b5,BorderLayout.CENTER);b1,East 程序BorderLayoutDemo片段改变窗口大小第3节 布局管理器GridLayout布局管理器 Grid
17、Layout(网格布局)将容器分割为行高和列宽都相同的多行多列网格,每个组件将依次从左到右,从上到下添加到网格中。第3节 布局管理器p1.setLayout(new p1.setLayout(new GridLayoutGridLayout(3,5,5,5);(3,5,5,5);for(int for(int i i=0;i10;i+)=0;i10;i+)p1.add(new p1.add(new JButtonJButton(+(+i i););p1.add(new p1.add(new JButtonJButton(+);(+);p1.add(new p1.add(new JButtonJ
18、Button(-);(-);p1.add(new p1.add(new JButtonJButton(*););p1.add(new p1.add(new JButtonJButton(/);(/);p1.add(new p1.add(new JButtonJButton(=);(=);cp.addcp.add(text1,BorderLayout.NORTH);(text1,BorderLayout.NORTH);cp.addcp.add(p1,Center);(p1,Center);改变窗口大小程序GridLayoutDemo片段第3节 布局管理器绝对定位 Java也提供了一种精确定位的方
19、式来控制组件在容器中的坐标,并且可以指定组件的大小。使用方法:1.setLayout方法将容器的布局方式设成null。setLayout(null)2.调用组件的setBounds方法来设置组件的位置和大小 setBounds(int x,int y,int width,int height)3.把组件添加到容器中 第3节 布局管理器cp.setLayout(null);l1.setBounds(30,30,70,30);text1.setBounds(100,30,70,30);b1.setBounds(60,80,70,30);cp.add(l1);cp.add(text1);cp.add
20、(b1);第4节 Java事件处理事件驱动是指触发一个事件(单击按钮),程序就会执行一个操作(关闭窗体)。前面的所有实例始终致力于GUI的设计,每个程序运行后除了视觉上的美观之外却没有实际意义。也就是说,任何按钮都不会按照文字提示来响应用户的操作(比如单击EXIT按钮,它不会退出窗口),那么怎么才能让组件“动”起来呢?Java使用事件驱动编程机制完成第4节 Java事件处理 事件模型事件(Event):是指一种状态的改变或者一个动作的发生。如单击按钮。事件源(Event Source):事件是由用户操作各种组件产生的,那么被操作的组件对象就被称为事件源。例如,单击某按钮时,按钮就是事件源。事件
21、监听器(Event Listener):监听事件源发生的事件,并对各种事件作出相应的处理。事件监听器包含在一个类中,这个类实现了某些特殊的接口,称为事件监听器接口,在接口中定义了处理事件的抽象方法。java.awt.event包和javax.swing.event包中定义了很多事件类及事件监听器接口。第4节 Java事件处理 以单击按钮对象(button1)后关闭窗口为例来说明委托事件模型处理事件的步骤。(1)确定需要处理的事件。设计一个事件监听器类,处理事件所对应的监听器接口,在该类中重写对应的抽象方法。单击按钮触发ActionEvent 事件ActionListener接口public v
22、oid actionPerformed(ActionEvent e)编写事件监听器类接口中定义的抽象方法对应实现对应的接口重写抽象方法,实现功能代码第4节 Java事件处理(2)将监听器类与事件源关联起来。可通过给事件源对象授权的方式来实现这个功能,也常称为向组件注册事件监听器。事件源(组件)类addXXXListener(EventListener eo)已经实现的事件监听器对象注册方法按钮对象Handle h1=new Handler();button1.addActionListener(h1);创建一个监听器对象,将其注册到按钮上第4节 Java事件处理事件处理过程模型 点击按钮时候,
23、按钮对象触发一个ActionEvent事件,然后将它作为参数传递以调用监听器的actionPerformed方法来处理这个事件。下列说法中,错误的一项是()在Java中,若要处理某类事件,必须定义相关的事件处理类在对事件源实例化之后,要注册相应事件的监听器事件处理类必须实现与该类事件相对应的监听器接口事件源通常是一个组件,也称监听器ABCD提交单选题第4节 Java事件处理import java.awt.event.*;public class ActionEventDemo public static void main(String args)button1.addActionListen
24、er(new Handler();class Handler implements ActionListener public void actionPerformed(ActionEvent e)System.exit(0);/结束程序的运行 程序ActionEventDemo片段第4节 Java事件处理 事件类和事件监听器1.事件类 2.事件监听器 表9-6 常用的事件类型及接口 第4节 Java事件处理事件监听器类事件监听器对象是本类对象实现接口中的方法public class MultiListenerDemo implements ActionListener public void
25、 designFrame()button1.addActionListener(this);button2.addActionListener(this);public void actionPerformed(ActionEvent e)if(e.getSource()=button1)panel1.setBackground(Color.red);else panel2.setBackground(new Color(a,b,c);程序MultiListenerDemo片段(两个事件源注册同一个事件监听器)第4节 Java事件处理鼠标事件 鼠标事件包括鼠标事件(MouseEvent)和鼠标
26、移动事件(MouseMotionEvent)。MouseEvent是指鼠标单击,双击以及鼠标进入或离开某组件区域时所触发的事件,而MouseMotionEvent是指鼠标拖动或者移动时所触发的事件。第4节 Java事件处理程序MouseDemo片段public class MouseDemo public void designFrame()container.addMouseListener(new MouseHandler();container.addMouseMotionListener(new MouseHandler();class MouseHandler implements
27、MouseListener,MouseMotionListener public void mouseClicked(MouseEvent e)int x=e.getX();int y=e.getY();System.out.println(鼠标单击的位置x:+x+ty:+y);public void mouseReleased(MouseEvent e)/鼠标释放 public void mouseEntered(MouseEvent e)/鼠标进入窗口 事件监听器类注册事件监听器内部类作事件监听器第4节 Java事件处理键盘事件 键盘事件(KeyEvent)是指按下键盘的任何键都会触发的事
28、件。第4节 Java事件处理程序KeyDemo片段public class KeyDemo public void designFrame()b1.addKeyListener(new KeyListener()public void keyPressed(KeyEvent e)switch(e.getKeyCode()/判断按键 case KeyEvent.VK_UP:/向上方向键 button1.setLocation(x,y-5);/按钮的位置法伤改变 break;public void keyReleased(KeyEvent e);public void keyTyped(KeyEv
29、ent e););/匿名内部类结束 事件监听器类注册事件监听器匿名内部类作事件监听器“空实现”的方式实现后面两个抽象方法。第4节 Java事件处理 事件适配器 适配器类就是为包含多个抽象方法的事件监听器接口提供了一个抽象类。这个抽象类中实现了监听器接口,并为该接口里的每个方法都提供了默认实现,但这种实现只是一种空实现。public abstract class MouseAdapter implements MouseListener public void mouseClicked(MouseEvent e)public void mousePressed(MouseEvent e)publ
30、ic void mouseReleased(MouseEvent e)public void mouseEntered(MouseEvent e)public void mouseExited(MouseEvent e)第4节 Java事件处理程序MouseDemo片段public class MouseDemo public void designFrame()container.addMouseListener(new MouseHandler();container.addMouseMotionListener(new MouseHandler();class MouseHandler
31、implements MouseListener,MouseMotionListener public void mouseClicked(MouseEvent e)int x=e.getX();int y=e.getY();System.out.println(鼠标单击的位置x:+x+ty:+y);public void mouseReleased(MouseEvent e)/鼠标释放 public void mouseEntered(MouseEvent e)/鼠标进入窗口 class MouseHandler extends MouseAdapter implements MouseMo
32、tionListener第4节 Java事件处理 事件监听器的实现方式 在事件处理过程中,事件监听器类必须实现事件监听器接口或者继承事件适配器类;注册事件监听器的语句通常在图形用户界面类中,这两个类之间是需要有一定的关联。通常事件监听器类的实现有四种常用的方法。外部类作为事件监听器 自身类作为事件监听器 内部类作为事件监听器 匿名内部类作为事件监听器若某个监听程序接口中定义了5种抽象的事件处理方法,但程序只用到其中的一种方法,则在实现该接口的类中,可以()只实现感兴趣的方法,而忽略其他方法将不感兴趣的方法内容设为空,而只具体实现所用到的方法不实现任何方法只实现其中的一些方法ABCD提交单选题在
33、Java的事件处理模型中,事件监听接口和事件适配器的关系是()两者无任何关系,但都可以为组件注册事件监听程序事件监听的接口的用途更广泛,而事件适配器用途较窄事件适配器是实现了相应事件监听接口的类,只是相应方法的实现内容为空事件适配器只是相应事件监听接口的子接口,内含的方法数目更少,更易于实现ABCD提交单选题第5节 常用Swing组件 Swing提供了20多种不同的组件。在使用不同的组件之前,需要了解它们的构造方法、成员方法及可能要处理的事件类。构造方法:能够正确地创建一个实例对象成员方法:能够得心应手地修改或获得对象有关属性值可能处理的事件类:能够在相应的事件方法中编写代码来响应用户的操作
34、目前所有的实例所实现的GUI界面都很单一,大部分都只由容器和按钮组件构成,这种设计一定不会满足应用程序的设计需要。那么,其他的组件又怎么创建及使用呢?第5节 常用Swing组件JComponent类常用的成员方法 第5节 常用Swing组件 标签常用构造方法 JLabel(String text):创建一个文本为text的标签,文字的默认对齐方式是LEFT JLabel(String text,Icon icon,int horizontalAlignment):创建一个指定图标icon,文本为text的标签,并指定水平对齐方式常用成员方法void setText(String text):设
35、置标签上显示的文本信息void setFont(Font f):设置标签文字内容的字体。Font类构造方法是Font(字体名字,字体样式,字体大小)基本上不去对事件作出响应 第5节 常用Swing组件JLabel label1=new JLabel(请输入姓名:);JLabel label2=new JLabel(请输入密码:,new ImageIcon(exit.gif),JLabel.RIGHT);label1.setFont(new Font(隶书,Font.BOLD,20);label2.setForeground(Color.red);第5节 常用Swing组件 按钮 常用构造方法
36、JButton(String text):创建一个显示内容为text的按钮JButton(String text,Icon icon):创建一个显示内容为text并带有一个icon图标的按钮常用成员方法void setActionCommand(String actionCommand):设置此按钮的动作命令void setMnemonic(int mnemonic):设置按钮的快捷键,键值使用KeyEvent类中定义的VK_XXX键之一指定单击按钮会触发ActionEvent事件 第5节 常用Swing组件JButton b1=new JButton(确定);JButton b2=new J
37、Button(关闭,new ImageIcon(exit.gif);b2.setMnemonic(KeyEvent.VK_B);b2.setActionCommand(exit);第5节 常用Swing组件 文本组件 在Swing中文本编辑组件主要有文本域(JTextField)、密码域(JPasswordField)及文本区(JTextArea)JTextField:只显示单行可编辑文本,使用单一字体和颜色JPasswordField:是JTextField的子类,实现文本域的字符隐藏功能,常用来输入密码项JTextArea:可以显示多行纯文本。JTextField构造方法与JPasswor
38、dField类似,以 JTextField为例来介绍.第5节 常用Swing组件JTextField构造方法 JTextField():创建一个空的文本域 JTextField(int columns):创建一个列数为columns的文本域 JTextField(String text):创建一个初始文本为text的文本域 JTextField(String text,int columns):创建一个列数为columns,初始文本为text的文本域JTextField常用成员方法 void setText(String text):改变文本域中的文本内容 String getText():获
39、取文本域中的文本内容,以字符串的形式返回 void setEditable(boolean b):指定文本域的是否可以编辑,默认为可编辑的第5节 常用Swing组件JPasswordField常用成员方法 void setEchoChar(char c):设置回显字符,默认的回显字符是“*”char getPassword():获取密码框中的密码 JTextField txtname=new JTextField(用户名用户名,10);JPasswordField pw1=new JPasswordField(10);JPasswordField pw2=new JPasswordField(
40、10);pw2.setEchoChar();str=txtname.getText();/str 是字符串变量是字符串变量 txtname.setText();第5节 常用Swing组件JTextArea构造方法 JTextArea():创建一个空的文本区 JTextArea(int rows,int cols):创建一个rows行,cols列的文本区 JTextArea(String text):创建一个初始文本为text的文本区 JTextArea(String text,int rows,int cols):创建一个rows行,cols列的文本区,初始文本为text的文本区JTextAr
41、ea常用成员方法 String getSelectedText():获取选中的文本void setLineWrap(boolean b):决定输入的文本能否在文本区的右边界自动换行,默认情况下是不换行的第5节 常用Swing组件JTextArea ta1=new JTextArea(3,10);JTextArea ta2=new JTextArea(3,10);JTextArea ta3=new JTextArea(3,10);JScrollPane jsp1=new JScrollPane(ta2);ta3.setLineWrap(true);第5节 常用Swing组件文本组件的事件 在AW
42、T中的文本组件内容发生变化时会触发TextEvent事件。然而,在Swing包中将对文本的监视任务放入了Document中。当文本内容发生变化时,会触发DocumentEvent事件。(1)创建一个Document的接口对象(文本对象.getDocument()),(2)新建对象可以通过addDocumentListener方法注册一个事件监听器。在文本域和密码域中输入结束按回车时,就会触发ActionEvent事件。在文本域(JTextField)组件中,当用户输入结束按Enter键时不会触发的事件是()。FousEventActionEventKeyEventTextListenerABC
43、D提交单选题第5节 常用Swing组件 单选按钮和复选框单选按钮常用的构造方法 JRadioButton(String text):创建一个有文本作为标签的单选按钮JRadioButton(String text,boolean b)创建一个有文本作为标签,并设置初始状态的单选按钮单选按钮常用的成员方法boolean isSelected():获得当前按钮的状态。返回true时表示处于选中状态,反之则处于未选中状态单击单选按钮或者复选框都会触发ItemEvent事件 第5节 常用Swing组件JRadioButton rb1=new JRadioButton(男男);JRadioButton
44、rb2=new JRadioButton(女女,true);ButtonGroup bg=new ButtonGroup();bg.add(rb1);bg.add(rb2);互斥的单选按钮必须放在一个按钮组类(ButtonGroup)中第5节 常用Swing组件列表框 列表框(JList)用来提供一组列表项,从中可以选择一项或者多项。常用构造方法:JList():创建一个没有任何选项的列表框JList(Object listData):创建一个列表框,列表项内容由数组对象listData决定JList(ListModel dataModel):创建一个列表框,列表项内容由ListModel型参
45、数dataModel指定String data=one,two,three,four;JList myList=new JList(data);第5节 常用Swing组件 用数组初始化的列表框中的内容不能动态地增加或者减少。JList组件将数据处理工作委托给ListModel接口完成,需要用到DefaultListModel类的方法来来完成。DefaultListModel类常用方法addElement(Object obj):添加元素 removeElement(Object obj):删除元素 DefaultListModel dataModel=new DefaultListModel(
46、);dataModel.addElement(one);dataModel.addElement(two);JList myList=new JList(dataModel);第5节 常用Swing组件常用成员方法:Object getSelectedValue():获得列表框中第一个被选定项的内容int getSelectedIndex():获得列表框中选定项的序号void setModel(ListModel model):重新设置ListModel列表框当前选项发生变化时,会触发ListSelectionEvent事件;列表框也常常监听MouseEvent事件,来响应用户点击列表项的动作
47、。JScrollPane jsp1=new JScrollPane(list1);list1.addMouseListener(new MouseAdapter()/匿名内部类匿名内部类 public void mouseClicked(MouseEvent e)dataMode2.addElement(list1.getSelectedValue(););第5节 常用Swing组件 组合框 组合框(JComboBox)是由一个编辑区和一个可选取项的下拉列表组成,其中编辑区分为可编辑和不可编辑两种,下拉列表部分是隐藏的。常用构造方法 JComboBox(Object items):创建一个组合
48、框,选项内容由数组对象items决定常用成员方法void addItem(Object obj):向下拉列表中增加选项void removeItem(Object obj):从组合框的Object getSelectedItem():获得当前下拉列表中被选中的选项int getSelectedIndex():获得当前下拉列表中被选中选项的索引值Object getItemAt(int index):获得指定索引处的列表项第5节 常用Swing组件String itemlist=北京北京,上海上海,广州广州;JComboBox jcb1=new JComboBox(itemlist);JComb
49、oBox jcb2=new JComboBox(itemlist);jcb1.setEditable(true);通过(),可以得到所选的下拉框的内容。调用选项数组的getSelectedItem()方法调用框架的getSelectedComboItem()方法调用下拉框的getSelectedItem()方法调用选中字符串的getSelectedString()方法ABCD提交单选题第5节 常用Swing组件对话框 对话框(JDialog)是用户交互的常用的窗口,是顶层容器组件。分为模式窗口和非模式窗口两类。JOptionPane.showConfirmDialog(frame,确认要注册一
50、个新账户吗?,消 息 框 ,J O p t i o n P a n e.Y E S _ N O _ C A N C E L _ O P T I O N,JOptionPane.QUESTION_MESSAGE);第5节 常用Swing组件菜单 在Java中,一个菜单是菜单条(JMenuBar)、菜单(JMenu)和菜单项(JMenuItem)三个组件类共同创建的。每个菜单项实际上就是一个按钮,所以单击它们就会触发ActionEvent事件。JMenuBar对象JMenuItem对象JMenu对象第5节 常用Swing组件1.菜单条JFrame myWindow=new JFrame();JMe