版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 顶级容器组件顶级容器组件 通用容器组件通用容器组件 专用容器组件专用容器组件 基本控件基本控件 不可编辑组件不可编辑组件 交互的格式组件交互的格式组件 文本组件文本组件 l框架框架 框架是一个图形界面程序的主窗口框架是一个图形界面程序的主窗口 在在Java中,每个具有图形界面的程序至少要有一个中,每个具有图形界面的程序至少要有一个 框架,小程序有时也会使用框架框架,小程序有时也会使用框架 框架是由边框、标题栏、最大化、最小化、还原、框架是由边框、标题栏、最大化、最小化、还原、 移动、关闭按钮、系统菜单,以及内容窗格组成移动、关闭按钮、系统菜单,以及内容窗格组成 内容窗格是框架的核心区域,主要
2、的图形界面组件、内容窗格是框架的核心区域,主要的图形界面组件、 菜单栏、工具栏都在内容窗格中菜单栏、工具栏都在内容窗格中 l框架框架 框架是框架是JFrame类的对象。创建并显示一个框架的步类的对象。创建并显示一个框架的步 骤如下:骤如下: 创建一个创建一个JFrame对象,此时框架尚未显示对象,此时框架尚未显示 在添加了组件之后,调用在添加了组件之后,调用pack函数排列组件函数排列组件 调用它的调用它的setVisible函数以显示框架函数以显示框架 FrameDemoFrame frame = new FrameDemoFrame(); frame.setTitle(FrameDemo
3、- 框架功能演示框架功能演示); frame.pack(); frame.setVisible(true); l框架框架 执行这段程序,显示的执行这段程序,显示的 框架如下图所示:框架如下图所示: 用鼠标拉开窗口之后,用鼠标拉开窗口之后, 如右图所示:如右图所示: 由于框架中尚没有组件,由于框架中尚没有组件, 因此因此Java自动将框架缩自动将框架缩 到最小尺寸到最小尺寸 l框架框架 利用利用setIconImage函数为程序设置图标函数为程序设置图标 String imgURL = myicon.gif; ImageIcon icon = new ImageIcon(imgURL); fra
4、me.setIconImage(icon.getImage(); 实际中,上述三行代码可以精简为一行:实际中,上述三行代码可以精简为一行: frame.setIconImage(new ImageIcon(myicon.gif).getImage(); l框架框架 关闭程序的方法关闭程序的方法1:将关闭窗口操作设为退出程序:将关闭窗口操作设为退出程序: frame.setTitle(FrameDemo - 框架功能演示框架功能演示); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); 上例中,调用上例中,调用
5、setDefaultCloseOperation函数设定关函数设定关 闭框架时的操作。函数形式如下:闭框架时的操作。函数形式如下: public void JFrame.setDefaultCloseOperation(int operation); l框架框架 参数代表关闭时的操作,可以有如下值:参数代表关闭时的操作,可以有如下值: lWindowConstants.DO_NOTHING_ON_CLOSE:不做任:不做任 何事,用窗口监听器进行关闭工作何事,用窗口监听器进行关闭工作 lWindowConstants.HIDE_ON_CLOSE:隐藏界面,这是:隐藏界面,这是 框架和对话框对象
6、的默认操作框架和对话框对象的默认操作 lWindowConstants.DISPOSE_ON_CLOSE:隐藏窗口,并:隐藏窗口,并 且释放它使用的资源,这是内部框架对象的默认操作且释放它使用的资源,这是内部框架对象的默认操作 lJFrame.EXIT_ON_CLOSE:退出应用程序,这种退出方:退出应用程序,这种退出方 式只能用于应用程序的主框架中式只能用于应用程序的主框架中 l框架框架 方法方法2:编写窗口监听器类,在窗口关闭事件中关:编写窗口监听器类,在窗口关闭事件中关 闭程序,如下面的代码所示:闭程序,如下面的代码所示: frame.setDefaultCloseOperation(
7、WindowConstants.DO_NOTHING_ON_CLOSE); frame. addWindowListener(new FrameDemoFrame_WindowListener_Closing(frame); l框架框架 两种方法实现的功能是一样的,第一种方法远比第两种方法实现的功能是一样的,第一种方法远比第 二种方法简单二种方法简单 但第一种方法在关闭时只能直接退出程序,而第二但第一种方法在关闭时只能直接退出程序,而第二 种方法可以实现更多功能种方法可以实现更多功能 如果在退出程序时需要用户确认,或者提示用户保如果在退出程序时需要用户确认,或者提示用户保 存文件,就必须采用第
8、二种方法存文件,就必须采用第二种方法 在使用第二种方法时,必须将窗口关闭时的操作设在使用第二种方法时,必须将窗口关闭时的操作设 为无,否则程序将直接退出为无,否则程序将直接退出 l框架框架 例题:在退出程序时,要求用户确认:例题:在退出程序时,要求用户确认: public void windowClosing(WindowEvent e) int returnValue; returnValue = JOptionPane.showConfirmDialog(null, 确实要退确实要退 出程序吗?出程序吗?, 退出程序退出程序, JOptionPane.YES_NO_OPTION); if
9、(returnValue = JOptionPane.YES_OPTION) System.exit(0); l框架框架 在框架中加入组件的方法:在框架中加入组件的方法: 用用getContentPane函数获得内容窗格函数获得内容窗格 在内容窗格中用在内容窗格中用add函数加入各种组件函数加入各种组件 JPanel contentPane; contentPane = frame.getContentPane(); JPanel panel1 = new JPanel(); contentPane.add(panel1); panel1.add(new JLabel(请点击下面的按钮:请点击
10、下面的按钮:); panel1.add(new JButton(关闭关闭); l框架框架 本例中,在内容窗格上加入了一个面板,在面板上本例中,在内容窗格上加入了一个面板,在面板上 放置了一个文字标签和一个按钮放置了一个文字标签和一个按钮 显示的效果如图:显示的效果如图: l框架框架 主程序框架一般还有菜单栏。主程序中的菜单栏通主程序框架一般还有菜单栏。主程序中的菜单栏通 过过setJMenuBar函数来设定:函数来设定: JMenuBar menuBar = new JMenuBar(); frame.setJMenuBar(menuBar); JMenuBar是菜单对象,实际中还需要在其中加
11、入是菜单对象,实际中还需要在其中加入 菜单项和菜单子项菜单项和菜单子项 关于菜单,后面还会有详细介绍关于菜单,后面还会有详细介绍 l框架框架 对于前面的例子,增加两个菜单项:对于前面的例子,增加两个菜单项:“文件文件”和和 “帮助帮助”,源代码见教材,增加菜单以后的主程序,源代码见教材,增加菜单以后的主程序 界面如下:界面如下: l框架框架 调整主程序界面的大小:调整主程序界面的大小: l调用调用pack函数进行自动调整函数进行自动调整 l调用调用setSize函数指定界面的大小函数指定界面的大小 l调用调用setLocation函数指定界面的位置函数指定界面的位置 l对话框对话框 对话框是另
12、一类常用的顶级容器对话框是另一类常用的顶级容器 对话框与框架非常相似,复杂的对话框也能够实现对话框与框架非常相似,复杂的对话框也能够实现 框架的几乎所有功能框架的几乎所有功能 实际中,常用的是界面简单、功能高度特化的对话实际中,常用的是界面简单、功能高度特化的对话 框框 l消息框:显示一条消息消息框:显示一条消息 l选择框:让用户进行选择选择框:让用户进行选择 l文件选择框:选择文件进行打开、保存等操作文件选择框:选择文件进行打开、保存等操作 l颜色选择框:从调色板中选择颜色颜色选择框:从调色板中选择颜色 l对话框对话框 例:在主框架程序中添加一个通用对话框,里面有例:在主框架程序中添加一个通
13、用对话框,里面有 一个文字标签和一个按钮:一个文字标签和一个按钮: public void showDialog2() JDialog dialog = new JDialog(this, 对话框对话框); JPanel panel1 = new JPanel(); dialog.getContentPane().add(panel1); panel1.add(new JLabel(这是一个对话框。这是一个对话框。); panel1.add(new JButton(点击这里点击这里); dialog.pack(); dialog.setVisible(true); l对话框对话框 对话框分为有
14、模式的和无模式的两种类型对话框分为有模式的和无模式的两种类型 有模式的对话框在显示时,将屏蔽用户向对话框所有模式的对话框在显示时,将屏蔽用户向对话框所 属的主框架键入的所有内容,用户不能对主框架进属的主框架键入的所有内容,用户不能对主框架进 行任何操作行任何操作 无模式对话框在显示时,用户仍然可以用鼠标点击无模式对话框在显示时,用户仍然可以用鼠标点击 主框架,在主框架里输入内容,或移动主框架主框架,在主框架里输入内容,或移动主框架 缺省的缺省的JDialog对话框都是无模式对话框对话框都是无模式对话框 l对话框对话框 如果要创建有模式对话框,可以在构造函数里增加如果要创建有模式对话框,可以在构
15、造函数里增加 一项如下:一项如下: JDialog dialog = new JDialog(this, 对话框对话框, true); 也可以用也可以用setModal函数来设置对话框是有模式的还函数来设置对话框是有模式的还 是无模式的:是无模式的: dialog.setModal(true); / 将对话框设置成有模式的将对话框设置成有模式的 dialog.setModal(false); / 将对话框设置成无模式的将对话框设置成无模式的 l对话框对话框 消息框(消息框(JOptionPane)是一种非常简洁、专用的)是一种非常简洁、专用的 对话框。对话框。 例:弹出一个提示消息框:例:弹出
16、一个提示消息框: JOptionPane.showMessageDialog(frame, 修改已经保存到文修改已经保存到文 件中。件中。); 弹出的消息框如下图所示:弹出的消息框如下图所示: l对话框对话框 消息框中的图标:消息框中的图标: l预设的图标有预设的图标有4种:错误图标、消息图标、警告种:错误图标、消息图标、警告 图标和提问图标图标和提问图标 l可以显示自己定制的图标可以显示自己定制的图标 不同界面风格下的图标风格:不同界面风格下的图标风格: lWindows风格风格 l对话框对话框 不同界面风格下的图标风格(续):不同界面风格下的图标风格(续): lJava风格风格 lCDE/
17、Motif风格风格 lGTK+风格风格 l对话框对话框 常用消息框的调用:常用消息框的调用: l消息框:利用静态函数消息框:利用静态函数showMessageDialog显示显示 l确认框:利用静态函数确认框:利用静态函数showConfirmDialog显示显示 l选择框:利用静态函数选择框:利用静态函数showOptionDialog显示显示 l输入框:利用静态函数输入框:利用静态函数showInputDialog显示显示 顶级容器组件顶级容器组件 通用容器组件通用容器组件 专用容器组件专用容器组件 基本控件基本控件 不可编辑组件不可编辑组件 交互的格式组件交互的格式组件 文本组件文本组件
18、 l面板面板 面板是最常用的容器组件。缺省情况下,面板上除面板是最常用的容器组件。缺省情况下,面板上除 了背景色以外没有任何东西了背景色以外没有任何东西 可以用多个面板,配合不同的布局管理器来配置控可以用多个面板,配合不同的布局管理器来配置控 件在界面上的布局件在界面上的布局 l面板面板 在布局过程中,面板应当与合适的布局管理器搭配使在布局过程中,面板应当与合适的布局管理器搭配使 用用 面板默认搭配的布局管理器是面板默认搭配的布局管理器是FlowLayout,它简单地,它简单地 将面板中的组件排成一排将面板中的组件排成一排 调用调用setLayout函数可搭配新的布局管理器函数可搭配新的布局管
19、理器: JPanel panel = new JPanel(); panel.setLayout(new BorderLayout(); panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS); l面板面板 调用调用add函数可以在面板中添加组件函数可以在面板中添加组件 对于大部分布局管理器,添加组件时不需要给出附对于大部分布局管理器,添加组件时不需要给出附 加参数:加参数: panel.add(myLabel); panel.add(myButton); 对于对于BorderLayout布局管理器,在添加组件时还需布局管理器,在添加
20、组件时还需 要给出组件的相对位置,如:要给出组件的相对位置,如: panel.add(myLabel, BorderLayout.PAGE_START); panel.add(myButton, BorderLayout.CENTER); l滚动条面板滚动条面板 滚动条面板可以在屏幕上有限的区域内显示更大范滚动条面板可以在屏幕上有限的区域内显示更大范 围的内容,例如:围的内容,例如: l滚动条面板滚动条面板 相应的代码如下:相应的代码如下: JScrollPane scrollPane = new JScrollPane(textArea1, JScrollPane.VERTICAL_SCRO
21、LLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); scrollPane.setPreferredSize(new Dimension(250, 250); l滚动条面板滚动条面板 滚动条面板的构造函数有三个参数:滚动条面板的构造函数有三个参数: 第一个参数是放在滚动条面板里的组件第一个参数是放在滚动条面板里的组件 第二个参数设置竖滚条的状态第二个参数设置竖滚条的状态 第三个参数设置横滚条的状态第三个参数设置横滚条的状态 竖滚条和横滚条都有三种状态:竖滚条和横滚条都有三种状态: lalways:不管是否需要,滚动条都会出现:不管是否需
22、要,滚动条都会出现 las needed:只有需要滚动条时才出现:只有需要滚动条时才出现 lnever:不管是否需要,滚动条都不出现:不管是否需要,滚动条都不出现 l滚动条面板滚动条面板 滚动条的状态通过滚动条的状态通过6个常量来表示:个常量来表示: l分隔条面板分隔条面板 分隔条面板将一个面板分为两部分,两部分之间被分隔条面板将一个面板分为两部分,两部分之间被 一个分隔条隔开,用户可以拖动分隔条来改变左右一个分隔条隔开,用户可以拖动分隔条来改变左右 面板的大小,如下图所示:面板的大小,如下图所示: l分隔条面板分隔条面板 分隔条面板由分隔条面板由JSplitPane对象实现对象实现 左右两部
23、分分别是两个子面板,子面板一般是滚动左右两部分分别是两个子面板,子面板一般是滚动 条面板条面板 下面的代码用来创建分隔条面板:下面的代码用来创建分隔条面板: JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, scrolll, scroll2); split.setDividerSize(8); split.setOneTouchExpandable(true); getContentPane().add(split, BorderLayout.CENTER); l分隔条面板分隔条面板 用户可以用鼠标左右拖动分隔条,来改
24、变两个子面用户可以用鼠标左右拖动分隔条,来改变两个子面 板的大小板的大小 分隔条上部的两个小三角形,它们分别用来完全展分隔条上部的两个小三角形,它们分别用来完全展 开一侧子面板,同时压缩另一侧开一侧子面板,同时压缩另一侧 l标签页面板标签页面板 标签页面板是一种特殊的面板标签页面板是一种特殊的面板 在标签页面板中,几个不同的子面板共享同一处空在标签页面板中,几个不同的子面板共享同一处空 间间 每个子面板上面有一个小小的标签,当用户点击标每个子面板上面有一个小小的标签,当用户点击标 签时,对应的子面板就会显示出来签时,对应的子面板就会显示出来 下图显示的是一个有两个子面板的标签页面板,每下图显示
25、的是一个有两个子面板的标签页面板,每 个子面板中显示不同的内容:个子面板中显示不同的内容: l标签页面板标签页面板 l标签页面板标签页面板 创建标签页面板的程序代码如下:创建标签页面板的程序代码如下: JTabbedPane tabbed = new JTabbedPane(); tabbed.addTab(第一页第一页, null, scrolll, 这是第一页内容这是第一页内容); tabbed.addTab(第二页第二页, null, scroll2, 这是第二页内容这是第二页内容); l标签页面板标签页面板 addTab函数带有四个参数:函数带有四个参数: l参数参数1:标签页的名称,
26、这个名称将显示在面板顶部的小:标签页的名称,这个名称将显示在面板顶部的小 小标签上;小标签上; l参数参数2:标签上显示的图标对象。如果没有图标,则设为:标签上显示的图标对象。如果没有图标,则设为 null即可;即可; l参数参数3:需要显示的子面板对象;:需要显示的子面板对象; l参数参数4:标签页的提示文字,当用户将鼠标在标签上停留:标签页的提示文字,当用户将鼠标在标签上停留 几秒钟后,提示文字就会出现,如下图所示:几秒钟后,提示文字就会出现,如下图所示: l标签页面板标签页面板 l工具栏工具栏 工具栏是图形界面程序常用的组件,它将一组按钮工具栏是图形界面程序常用的组件,它将一组按钮 排成
27、一行,放在程序的顶端排成一行,放在程序的顶端 工具栏一般作为菜单栏的补充,为菜单栏中常用的工具栏一般作为菜单栏的补充,为菜单栏中常用的 命令提供一种快捷的执行方法命令提供一种快捷的执行方法 l工具栏工具栏 工具栏通过工具栏通过JToolBar对象来实现:对象来实现: JToolBar toolBar = new JToolBar(); toolBar.add(button1); toolBar.add(button2); frame.getContentPane().add(toolBar, BorderLayout.PAGE_START); l工具栏工具栏 工具栏中还可以设置分隔条,分隔条将
28、按钮分隔开,工具栏中还可以设置分隔条,分隔条将按钮分隔开, 以达到分组的目的:以达到分组的目的: 分隔条通过分隔条通过addSeparator函数来添加,效果如下图函数来添加,效果如下图 所示:所示: toolBar.add(button2); toolBar.addSeparator(); toolBar.add(button3); l工具栏工具栏 工具栏可以灵活拖动,只需要用鼠标拖动左侧的竖工具栏可以灵活拖动,只需要用鼠标拖动左侧的竖 状凸条,就可以将工具栏拖动到上、下、左、右位状凸条,就可以将工具栏拖动到上、下、左、右位 置,也可以浮动在框架之上置,也可以浮动在框架之上 灵活拖动的前提是
29、:灵活拖动的前提是: l内容窗格必须用缺省的边界型布局管理器内容窗格必须用缺省的边界型布局管理器 l内容窗格里只有一个面板和一个菜单栏内容窗格里只有一个面板和一个菜单栏 l面板放在内容窗格的中心(面板放在内容窗格的中心(CENTER),菜单栏放在内容),菜单栏放在内容 窗格的周边(窗格的周边(EAST, SOUTH, WEST, NORTH) l工具栏工具栏 顶级容器组件顶级容器组件 通用容器组件通用容器组件 专用容器组件专用容器组件 基本控件基本控件 不可编辑组件不可编辑组件 交互的格式组件交互的格式组件 文本组件文本组件 l内部框架内部框架 内部框架常用于多文档界面,它的特点是在主框架内部
30、框架常用于多文档界面,它的特点是在主框架 的内部还有一系列子框架:的内部还有一系列子框架: l内部框架内部框架 创建内部框架的基本步骤如下:创建内部框架的基本步骤如下: (1) 创建内部框架对象创建内部框架对象 JInternalFrame subFrame1 = new JInternalFrame( 文档文档1, true, true, true, true); 内部框架对象的构造函数有内部框架对象的构造函数有5个参数:个参数: l参数参数1:显示在子框架标题栏上的名称;:显示在子框架标题栏上的名称; l参数参数2:设定子框架能否改变大小;:设定子框架能否改变大小; l参数参数3:设定子框
31、架能否关闭;:设定子框架能否关闭; l参数参数4:设定子框架能否最大化;:设定子框架能否最大化; l内部框架内部框架 l参数参数5:设定子框架能否缩成一个图标。需要注意的是,:设定子框架能否缩成一个图标。需要注意的是, 子框架缩成的图标是在主框架的左下角,而不会在操作系子框架缩成的图标是在主框架的左下角,而不会在操作系 统的任务栏出现:统的任务栏出现: l内部框架内部框架 (2) 设置子框架对象的属性设置子框架对象的属性 l子框架的属性包括子框架大小、位置,显示子框架,将子子框架的属性包括子框架大小、位置,显示子框架,将子 框架设置成选中状态,如下面的代码所示:框架设置成选中状态,如下面的代码
32、所示: subFrame1.setSize(300, 300); subFrame1.setLocation(30, 30); subFrame1.setVisible(true); try subFrame1.setSelected(true); catch (java.beans.PropertyVetoException e) l内部框架内部框架 (3) 将子框架放在桌面面板上将子框架放在桌面面板上 l子框架不能放在普通的面板上,必须放到桌面面板子框架不能放在普通的面板上,必须放到桌面面板 (JDesktopPane)上)上 l将桌面面板作为主框架的内容窗格,再将子框架放到桌面将桌面面板
33、作为主框架的内容窗格,再将子框架放到桌面 面板上,如下面的代码所示面板上,如下面的代码所示: JDesktopPane desktop = new JDesktopPane(); desktop.setBackground(new Color(160, 160, 160); desktop.add(subFrame1); setContentPane(desktop); l分层窗格分层窗格 分层窗格是一个可以有多层的容器,作用是让相互分层窗格是一个可以有多层的容器,作用是让相互 重叠的组件可以按照它们重叠的次序显示,上层的重叠的组件可以按照它们重叠的次序显示,上层的 组件覆盖在下层组件之上组件
34、覆盖在下层组件之上 l根窗格根窗格 根窗格直属于顶级的框架或对话框,包含了内容窗根窗格直属于顶级的框架或对话框,包含了内容窗 格和菜单栏,以及分层窗格、玻璃窗格等不可见的格和菜单栏,以及分层窗格、玻璃窗格等不可见的 功能窗格,它的作用是管理所有这些窗格功能窗格,它的作用是管理所有这些窗格 顶级容器组件顶级容器组件 通用容器组件通用容器组件 专用容器组件专用容器组件 基本控件基本控件 不可编辑组件不可编辑组件 交互的格式组件交互的格式组件 文本组件文本组件 l基本控件基本控件 基本控件包括:基本控件包括: l按钮,单选框、复选框按钮,单选框、复选框 l下拉框下拉框 l列表框列表框 l菜单菜单 l
35、文本框文本框 它们是组成图形用户界面的原子控件,它们的作用它们是组成图形用户界面的原子控件,它们的作用 主要是从用户那里得到输入,同时也显示一些简单主要是从用户那里得到输入,同时也显示一些简单 的状态。的状态。 l按钮按钮 Swing中的按钮有三种类型:中的按钮有三种类型: l普通按钮(普通按钮(JButton) l单选框(单选框(JRadioButton) l复选框(复选框(JCheckBox) 这三类按钮都从这三类按钮都从AbstractButton(抽象按钮)(抽象按钮) 类继承而来类继承而来 l普通按钮普通按钮 Swing里的按钮设置十分灵活,即可以显示文字,里的按钮设置十分灵活,即可
36、以显示文字, 也可以显示图片,或者同时显示文字和图片也可以显示图片,或者同时显示文字和图片 下面的例子是一个简单的按钮演示程序,其中有下面的例子是一个简单的按钮演示程序,其中有3 个按钮,程序界面如下:个按钮,程序界面如下: l普通按钮普通按钮 与按钮有关的代码如下:与按钮有关的代码如下: panel = new JPanel(); b1 = new JButton(向后向后, new ImageIcon(prev.gif); b2 = new JButton(显示当前显示当前); b3 = new JButton(向前向前, new ImageIcon(next.gif); panel.ad
37、d(b1); panel.add(b2); panel.add(b3); l普通按钮普通按钮 JButton的构造函数有的构造函数有5种:种: JButton(); JButton(Action a); JButton(Icon icon); JButton(String text); JButton(String text, Icon icon); 对应于空白按钮,与动作关联的按钮,只显示图标对应于空白按钮,与动作关联的按钮,只显示图标 的按钮,只显示文字的按钮,同时显示文字和图标的按钮,只显示文字的按钮,同时显示文字和图标 的按钮的按钮 l普通按钮普通按钮 按钮的功能是当用户点击时,完成一
38、项工作。因此按钮的功能是当用户点击时,完成一项工作。因此 需要给按钮设置动作监听器:需要给按钮设置动作监听器: b1.addActionListener(new Buttonb1ActionListenerClass(this); class Buttonb1ActionListenerClass implements ActionListener ButtonDemo frame; public Buttonb1ActionListenerClass(ButtonDemo frame) this. frame = frame; public void actionPerformed(Acti
39、onEvent e) frame.Buttonb1ActionPerformed(e); l单选框单选框 单选框(单选框(JRadioButton)在图形界面上显示为若干)在图形界面上显示为若干 小圆点小圆点 单选框的作用是在几个选项中选一项,且只能选一单选框的作用是在几个选项中选一项,且只能选一 项。如下面的例子:项。如下面的例子: l单选框单选框 产生单选框的步骤:产生单选框的步骤: (1) 建立单选框对象建立单选框对象 JRadioButton radio1 = new JRadioButton(鱼鱼); JRadioButton radio2 = new JRadioButton(熊掌
40、熊掌, true); l单选框单选框 (2) 将相关的单选框分到一组中将相关的单选框分到一组中 建立单选框对象以后,并不代表这些单选框之间就建立单选框对象以后,并不代表这些单选框之间就 已经具有相互排斥的关系了。已经具有相互排斥的关系了。 对于前面建立的两个单选框,如果你试着点击一下,对于前面建立的两个单选框,如果你试着点击一下, 就会发现两个单选框都可以选中:就会发现两个单选框都可以选中: l单选框单选框 只有分为一组的单选框才有单选的关系,将单选框只有分为一组的单选框才有单选的关系,将单选框 分组的代码如下:分组的代码如下: ButtonGroup group = new ButtonGr
41、oup(); group.add(radio1); group.add(radio2); l单选框单选框 (3) 将单选框放到面板中将单选框放到面板中 panel.add(radio1); panel.add(radio2); 单选框一般是排成一行或一列单选框一般是排成一行或一列 对于按行排列的单选框,面板用缺省的流式布局对于按行排列的单选框,面板用缺省的流式布局 (FlowLayout)即可即可 对于按列排列的单选框,面板需要用盒式布局对于按列排列的单选框,面板需要用盒式布局 (BoxLayout)或表格式布局或表格式布局(GridLayout) l单选框单选框 单选框也属于按钮的一类,因此
42、它也可以添加单选框也属于按钮的一类,因此它也可以添加 ActionListener监听器监听器 当用户点击一个单选框时,会自动调用它所对应的当用户点击一个单选框时,会自动调用它所对应的 监听器,去完成相应的操作监听器,去完成相应的操作 更常见的情况是,用户点击单选框时不需要执行什更常见的情况是,用户点击单选框时不需要执行什 么操作,只是选中一项么操作,只是选中一项 在最后用户点击在最后用户点击“确定确定”按钮时,再查询单选框的按钮时,再查询单选框的 状态状态 l单选框单选框 对于这种情况,就不需要给单选框添加监听器了,对于这种情况,就不需要给单选框添加监听器了, 如下面的代码:如下面的代码:
43、if (radio1.isSelected() System.out.println(你选择了鱼。你选择了鱼。); if (radio2.isSelected() System.out.println(你选择了熊掌。你选择了熊掌。); 在在“确定确定”按钮的事件处理函数中,调用单选框的按钮的事件处理函数中,调用单选框的 isSelected函数查询它是否被选中函数查询它是否被选中 l复选框复选框 复选框(复选框(JCheckBox)与单选框的作用相似,也是)与单选框的作用相似,也是 选择一些选项,不同的是这些选项之间没有相互排选择一些选项,不同的是这些选项之间没有相互排 斥的关系斥的关系 复选
44、框的外形是方形小框复选框的外形是方形小框 ,如果你选中了一个复,如果你选中了一个复 选框,小框中会出现一个对勾选框,小框中会出现一个对勾 。 l复选框复选框 创建复选框的代码如下:创建复选框的代码如下: JCheckBox check1 = new JCheckBox(音乐音乐); JCheckBox check2 = new JCheckBox(文学文学); JCheckBox check3 = new JCheckBox(体育体育, true); JCheckBox check4 = new JCheckBox(电视电视); JCheckBox check5 = new JCheckBox
45、(旅游旅游, true); 复选框的创建分两步:复选框的创建分两步: l创建一个复选框控件对象创建一个复选框控件对象 l将复选框控件放到面板上将复选框控件放到面板上 l复选框复选框 常用的复选框对象构造函数有两种常用的复选框对象构造函数有两种 第一种构造函数只有一个参数,就是复选框右侧显第一种构造函数只有一个参数,就是复选框右侧显 示的文字示的文字 第二种构造函数有两个参数,第二个参数是一个逻第二种构造函数有两个参数,第二个参数是一个逻 辑型变量:辑型变量: l参数的值为真,表示缺省选中该复选框参数的值为真,表示缺省选中该复选框 l参数的值为假,表示缺省不选中该复选框参数的值为假,表示缺省不选
46、中该复选框 与单选框不同,复选框之间没有互斥的关系,因此与单选框不同,复选框之间没有互斥的关系,因此 不需要分组不需要分组 l复选框复选框 与单选框类似,复选框也属于按钮的一类,因此它与单选框类似,复选框也属于按钮的一类,因此它 也可以添加也可以添加ActionListener监听器监听器 当用户点击一个复选框时,会自动调用它所对应的当用户点击一个复选框时,会自动调用它所对应的 监听器,去完成相应的操作监听器,去完成相应的操作 更常见的情况是,用户点击复选框时不需要执行什更常见的情况是,用户点击复选框时不需要执行什 么操作,只是选中它么操作,只是选中它 在最后用户点击在最后用户点击“确定确定”
47、按钮时,再逐一查询每个按钮时,再逐一查询每个 复选框的状态。在这种情况下,就不需要给复选框复选框的状态。在这种情况下,就不需要给复选框 添加监听器了添加监听器了 l复选框复选框 在函数中,调用复选框的在函数中,调用复选框的isSelected函数查询它是否函数查询它是否 被选中,如下面的代码所示:被选中,如下面的代码所示: System.out.print(你的兴趣爱好有:你的兴趣爱好有:); if (check1.isSelected() System.out.print(音乐音乐 ); if (check2.isSelected() System.out.print(文学文学 ); if
48、(check3.isSelected() System.out.print(体育体育 ); if (check4.isSelected() System.out.print(电视电视 ); if (check5.isSelected() System.out.print(旅游旅游 ); l下拉框下拉框 下拉框又叫组合框(下拉框又叫组合框(JComboBox),是一种多个选),是一种多个选 项中选择一个的组件项中选择一个的组件 从功能上看,它和前面的单选框很像,但是下拉框从功能上看,它和前面的单选框很像,但是下拉框 平时只占用一行文本的空间平时只占用一行文本的空间 只有当用户点击时才会向下弹出所
49、有的选项,因此只有当用户点击时才会向下弹出所有的选项,因此 它比单选框要节省空间它比单选框要节省空间 下拉框可以很方便地增加、删除选项下拉框可以很方便地增加、删除选项 l下拉框下拉框 下拉框分为两类:下拉框分为两类: l不可编辑的下拉框:用户只能从预设的项中选择不可编辑的下拉框:用户只能从预设的项中选择 l可编辑的下拉框:允许用户编辑、修改文本可编辑的下拉框:允许用户编辑、修改文本 下拉框由两部分组成:下拉框由两部分组成: l文本框,它一直存在,显示用户选择的文本;文本框,它一直存在,显示用户选择的文本; l弹出式列表,显示所有预设的选项,它只有在用弹出式列表,显示所有预设的选项,它只有在用
50、户点击下拉框右侧的三角形按钮时才会出现户点击下拉框右侧的三角形按钮时才会出现 l下拉框下拉框 例题:两个下拉框,左图是普通状态,右图是下拉例题:两个下拉框,左图是普通状态,右图是下拉 框展开时的状态框展开时的状态 l下拉框下拉框 String comboStr1 = 10岁以下岁以下, 1120岁岁, 2030岁岁, 3040岁岁, 4050岁岁, 5060岁岁, 60岁以上岁以上; JComboBox combo1 = new JComboBox(comboStr1); panel.add(combo1); l下拉框下拉框 这种方法创建的是不可编辑的下拉框,只这种方法创建的是不可编辑的下拉框
51、,只 能从预设的选项中选择能从预设的选项中选择 右图给出不可编辑的下拉框在收起和下拉右图给出不可编辑的下拉框在收起和下拉 状态下的界面外观状态下的界面外观 在下拉框收起的时候,所有内容都变成深在下拉框收起的时候,所有内容都变成深 蓝色背景,无法修改其中的内容蓝色背景,无法修改其中的内容 l下拉框下拉框 创建可编辑的下拉框,需要调用创建可编辑的下拉框,需要调用setEditable函数设函数设 置下拉框的属性:置下拉框的属性: String comboStr2 = 足球足球,篮球篮球,羽毛球羽毛球,乒乓球乒乓球,象棋象棋 ,围棋围棋; JComboBox combo2 = new JComboB
52、ox(comboStr2); combo2.setEditable(true); panel.add(combo2); l下拉框下拉框 与单选框、复选框一样,下拉框一般也是在用户点与单选框、复选框一样,下拉框一般也是在用户点 击击“确定确定”按钮之后才处理其内容按钮之后才处理其内容 lgetSelectedItem函数,得到选择的文本函数,得到选择的文本 lgetSelectedIndex函数,得到选择的项函数,得到选择的项 l下拉框下拉框 还有两个函数也很常用:还有两个函数也很常用: lgetItemAt函数,获得某项选项的内容,函数,获得某项选项的内容, lgetItemCount函数,获
53、得选项的数量。函数,获得选项的数量。 这两个函数相结合,可以得到所有的预设选这两个函数相结合,可以得到所有的预设选 项,如下面的代码所示:项,如下面的代码所示: for (int i = 0; i combo2.getItemCount(); i+) System.out.println(combo2.getItemAt(i); l下拉框下拉框 下拉框还提供一系列函数用于添加、插入、删除选下拉框还提供一系列函数用于添加、插入、删除选 项,这些函数列举如下:项,这些函数列举如下: / 在预设选项列表的最后添加一项,在预设选项列表的最后添加一项,anItem为添加的字符串对象为添加的字符串对象 v
54、oid addItem(Object anItem); / 在预设列表中插入一项,在预设列表中插入一项,anItem为添加的字符串对象,为添加的字符串对象,index为插入的位置为插入的位置 void insertItemAt(Object anItem, int index); / 移去内容与移去内容与anItem相同的预设选项相同的预设选项 void removeItem(Object anItem); / 移去序号为移去序号为index的预设选项的预设选项 void removeItemAt(int index); / 移去所有的预设选项移去所有的预设选项 void removeAllI
55、tems(); l列表框列表框 列表框的作用是给出一系列选项,用户可以进行单列表框的作用是给出一系列选项,用户可以进行单 选或多选选或多选 从功能上,列表框与复选框的功能接近,不过列表从功能上,列表框与复选框的功能接近,不过列表 框比复选框更加灵活框比复选框更加灵活 从外观上,列表框与下拉框比较接近,不过列表框从外观上,列表框与下拉框比较接近,不过列表框 是一直存在的,而下拉框的列表只有在鼠标点击时是一直存在的,而下拉框的列表只有在鼠标点击时 才会出现才会出现 下图是一个简单的列表框界面:下图是一个简单的列表框界面: l列表框列表框 l列表框列表框 列表框的建立分以下三步:列表框的建立分以下三
56、步: (1) 创建列表框对象创建列表框对象 列表框是列表框是JList类的对象。与下拉框类似,在创建列类的对象。与下拉框类似,在创建列 表框对象时,一般需要在构造函数中通过一个字符表框对象时,一般需要在构造函数中通过一个字符 串数组给出选项内容:串数组给出选项内容: String listStr = 足球足球,篮球篮球,排球排球,网球网球,羽毛球羽毛球, 乒乓球乒乓球,游泳游泳,长跑长跑,登山登山,象棋象棋,围棋围棋,桥牌桥牌; JList list = new JList(listStr); l列表框列表框 (2) 设置列表框属性设置列表框属性 在创建列表框以后,需要设置它的三个属性:选项在
57、创建列表框以后,需要设置它的三个属性:选项 模式、布局方向以及可见的行数模式、布局方向以及可见的行数 选项模式有三种:选项模式有三种: l单项选择:只能选择一项单项选择:只能选择一项 l区间选择:可以选择一个区间范围区间选择:可以选择一个区间范围 l多项选择:可以选择一个区间,或几个文件多项选择:可以选择一个区间,或几个文件 l列表框列表框 下图显示了三种选项模式的区别:下图显示了三种选项模式的区别: l列表框列表框 选项模式通过选项模式通过setSelectionMode函数来设定,函数的参函数来设定,函数的参 数表示三种选择模式:数表示三种选择模式: / 设置为单项选择模式设置为单项选择模
58、式 list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); / 设置为区间选择模式设置为区间选择模式 list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SEL ECTION); / 设置为多项选择模式设置为多项选择模式 list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_S ELECTION); l列表框列表框 列表框的布局方向也有三种:列表框的布局方向也有三种: l横向换行:选项按行排列,一行放不下时
59、换行放横向换行:选项按行排列,一行放不下时换行放 置,如果行数太多,就添加上下滚动的竖滚条;置,如果行数太多,就添加上下滚动的竖滚条; l纵向换列:选项按列排列,一列放不下的话就换纵向换列:选项按列排列,一列放不下的话就换 一列放置,如果列数太多,就添加左右滚动的横一列放置,如果列数太多,就添加左右滚动的横 滚条;滚条; l纵向布局:简单地将选项放在一列中,如果项目纵向布局:简单地将选项放在一列中,如果项目 数太多,就添加竖滚条以上下滚动;数太多,就添加竖滚条以上下滚动; l缺省的布局方向是纵向布局缺省的布局方向是纵向布局 l列表框列表框 下图给出了三种布局方向的外观:下图给出了三种布局方向的
60、外观: l列表框列表框 布局方向通过布局方向通过setLayoutOrientation函数来设置,该函数来设置,该 函数的参数表示三种布局方向,如下面的代码所示:函数的参数表示三种布局方向,如下面的代码所示: / 设置为横向换行设置为横向换行 list.setLayoutOrientation(JList.HORIZONTAL_WRAP); / 设置为纵向换列设置为纵向换列 list.setLayoutOrientation(JList.VERTICAL_WRAP); / 设置为纵向布局设置为纵向布局 list.setLayoutOrientation(JList.VERTICAL); l列
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司服务流程提升方案
- 公司大数据应用方案
- 智算中心压力测试方案
- 企业消防检查方案
- 企业投诉处理管理方案
- 广元市2025上半年四川广元市青川县引进(招聘)高层次和急需紧缺专业人才25人笔试历年参考题库典型考点附带答案详解
- 宿迁市2025江苏宿迁市数据局局属事业单位招聘工作人员7人笔试历年参考题库典型考点附带答案详解
- 定远县2025安徽滁州定远县事业单位公开招聘工作人员79人笔试历年参考题库典型考点附带答案详解
- 宁化县2025福建三明宁化县农业农村局招聘特聘渔技员1人笔试历年参考题库典型考点附带答案详解
- 四川省2025年上半年四川省粮食和物资储备局直属事业单位招聘工作人员7笔试历年参考题库典型考点附带答案详解
- 2026年pcb维修主管测试题及答案
- 2026年无人机植保技术考试题库及答案
- 2026浙江杭州市西湖区第四次全国农业普查领导小组办公室招聘2人笔试备考试题及答案详解
- 2026-2030中国摩洛哥坚果油行业市场发展分析及竞争格局与投资前景研究报告
- 中核集团校招测评题
- 2024新版2026春人教版英语八年级下册教学课件:Unit6第2课时(Section A 3a-3d)
- 银川市、石嘴山市、吴忠市三市2026年高三年级学科教学质量检测 政治+答案
- 采购廉洁行为准则制度
- TSG 08-2026 特种设备使用管理规则
- 江苏交通控股公司校招面笔试题及答案
- AQ推动生产经营单位落实“七项机制”压实安全生产主体责任
评论
0/150
提交评论