swing用户界面组件.ppt

上传人:za****8 文档编号:6314819 上传时间:2020-02-22 格式:PPT 页数:66 大小:416.50KB
返回 下载 相关 举报
swing用户界面组件.ppt_第1页
第1页 / 共66页
swing用户界面组件.ppt_第2页
第2页 / 共66页
swing用户界面组件.ppt_第3页
第3页 / 共66页
点击查看更多>>
资源描述
第十四讲 Swing用户界面组件 2 目标 了解Swing的结构了解SwingGUI的容器掌握Jframe和Jpanel的使用掌握用户界面组件的使用方法掌握常用Swing布局管理器的使用 3 Swing结构 Object Component JFrame Container Window Frame Dialog JDialog JText JComboBox JLabel JList JMenuBar JOptionPane JPanel JScrollBar AbstractButton JToggleButton JMenuItem JButton JCheckBox JRadioButton JComponent JMenu 4 文本组件 JtextComponent是所有Swing文本组件的根类 Javax swing text JtextComponent类的常用方法 voidsetText Stringt 改变一个文本组件中的文本StringgetText 返回一个文本组件中的文本voidsetEditable booleanb 决定用户能否编辑文本组件的内容 5 文本框JTextField 1 JTextField组件允许输入或编辑单行文本此类的构造函数包括 JTextField JTextField Documentdoc Stringtext intcolumns JTextField intcolumns 建立一个指定列宽度的空白文本框JTextField Stringtext 建立一个带有初始文本的文本框JTextField Stringtext intcolumns 把文本框添加到窗口的通常办法是把它先添加到面板或者其它容器中 示例 Containercon getContentPane con setLayout newFlowLayout JLabeljl newJLabel 文本域 con add jl JTextFieldtf newJTextField 20 con add tf 6 文本框JTextField 2 在实践中 应该把文本框的最大列宽多设1到2个字符 输入文本的长度可以超过最大列宽 这时文本框就会卷动 如果你需要在运行时重新设置列宽 应联合使用setColumns方法和包含该文本框的容器的validate方法 textFiled setColumns 10 panel validate 布局管理器重新绘制容器可以在任何时候改变文本框的内容 textFiled setText hello 获取文本框中的内容并去掉前后空格 textFiled getText trim intadd1 Integer parseInt textFiled getText trim 7 文本框JTextField 3 所有文本组件的模型都由Document接口说明 这既包括无格式的文本 也包括格式化的文本 如html 当数据改变后 可以要求文档 而非文本组件 通知你 这需要安装一个文档监听器 新建文档监听器DocumentListenerresultListener newResultListener 为第一个文本域安装一个文档监听器originText getDocument addDocumentListener resultListener 当文本发生改变后 下面三个方法之一会被调用 voidinsertUpdate DocumentEvente voidremoveUpdate DocumentEvente voidchangedUpdate DocumentEvente 改变格式时你的文档监听器必须实现这三个方法如果你使用一个动作监听器的话 只有当用户按下ENTER键时 该动作监听器才会得到通知 8 文本框使用示例 获取两个文本框的输入并求和 然后显示在第三个文本框中 程序代码见TextFieldTest java 运行结果如下 初始状态 改变输入 9 密码框JPasswordField 特殊的文本框 在密码框中输入时 用户的输入并不会真正显示出来 而是显示回显字符 如 以防止被他人看见用户输入的密码 构造函数 JPasswordField Stringtext intcolumns 参数 text显示的文本 如果没有则为nullcolumns列大小其它方法voidsetEchoChar charecho 设置密码框的回显字符 0表示设置为默认回显字符char getPassword 返回包含在密码框中的文本 10 密码框使用示例 将密码框的输入显示在文本框中程序代码见PasswordFieldTest java 运行结果如下 11 文本区JTextArea3 1 在一个文本区里 用户可以输入多行文本它可实现可滚动界面JTextArea组件可使用下列构造函数创建 JTextArea JTextArea introws intcols 建立一个指定行列的文本区JTextArea Stringtext 建立一个带初始化文本的文本区JTextArea Stringtext introws intcols JTextArea Documentdoc JTextArea Documentdoc Stringtext introws intcols 例 JLabeljl newJLabel 文本区 con add jl JTextAreata newJTextArea 5 10 con add ta 12 文本区JTextArea3 2 多行文本之间的换行可以采用两种方式 1 手动换行 即输入ENTER键 这将在文本中插入换行符 n 2 通过设置换行属性来避免手动换行 由文本区组件自动处理 textArea setLineWrap true 对长的行换行设置为真但是这样的设置并没有真正在文本中插入换行符 n 在Swing中 文本区没有滚动条 要给文本区增加滚动条 可以通过把文本区插入到一个滚动窗格中 然后把该滚动窗格插入进内容窗格中 textArea newJTextArea 8 40 JScrollPanescrollPane newJScrollPane textArea contentPane add scrollPane BorderLayout CENTER 在Swing中 给组件添加滚动条的通用处理方法是 把组件添加进一个滚动窗格中 滚动由滚动窗格内部处理 滚动条会自动出现或消失 13 文本区JTextArea3 3 Javax swing JTextArea类的常用方法 VoidsetColumns intcols 设置文本区的列数VoidsetRows introws设置文本区的行数Voidappend StringnewText 把指定文本追加到文本区文本的末尾VoidsetLineWrap打开或关闭换行VoidsetTabSize intc 设置TAB键的列数为cJavax swing JScrollPane类的构造函数JScrollPane Componentc 创建一个显示指定组件c的滚动窗格 当组件内容超过显示范围时 滚动条会自动出现 14 文本区使用示例 文本区的三种显示方式程序代码见TextAreaTest java 运行结果如下 15 标签JLabel3 1 标签是容纳文本的组件 这种组件没有修饰 例如 没有边界 它们也不响应用户输入 标签常用来标识组件 如文本组件 给组件设置标签的方法如下 使用正确的文本构造一个JLable组件把该标签组件放置到同需要标识的组件足够的地方 这样用户能够看到该标签标识了哪个组件标签同任何其它组件一样 可以定位在一个容器中 你可以把它放在你需要的地方 16 标签JLabel3 2 它既可以显示文本也可以显示图像构造函数如下 JLabel Iconicon 使用左对齐图标来构造一个标签JLabel Stringtext 使用左对齐字符串来构造一个标签JLabel Stringtext intalign 使用字符串及指定的对齐方式来构造一个标签JLabel Stringtext Iconicon intalign 同时使用字符串和图标及指定的对齐方式来构造一个标签参数 text表示使用的字符串 icon表示使用的图标 align表示水平对齐方式 其值可以为 SwingConstants LEFT SwingConstants RIGHT SwingConstants CENTER SwingConstants NORTH SwingConstants EAST等说明 JLable实现了SwingConstants接口 该接口定义了很多有用的常量 SwingConstants LEFT也可以写成JLable LEFT 17 标签JLabel3 3 SetText和SetIcon方法可以在运行时设定标签的文本和图标VoidsetText Stringtext VoidsetIcon Iconicon 例 JLablelable newJLable text SwingConstants RIGHT 或JLablelable newJLable text JLable RIGHT 18 按钮JButton2 1 JButton类允许用图标 字符串或两者同时构造一个按钮 构造函数如下 JButton Iconicon icon表示使用的图标JButton Stringtext text表示使用的字符串JButton Stringtext Iconicon 例 loginButton newJButton 登录 newImageIcon login gif 19 按钮JButton2 2 当希望按钮对单击动作有所反应时 我们需要为按钮注册一个事件监听器 并且实现这个事件监听器 就可以完成所需要的按钮功能 注册事件监听器loginButton addActionListener newLoginAction 实现事件监听器privateclassLoginActionimplementsActionListener 20 按钮使用示例 密码验证示例当用户输入密码后 按下 登录 按钮 然后我们将密码输入是否正确的结果显示在文本域中 程序代码见Login java 运行结果如下 21 选择性输入组件 为了简化表单填写过程 通常为用户提供多种可供选择的选项 而无需用户写出他们的响应 常用于选择性输入的组件有 复选框单选按钮列表框组合框 22 单选按钮JRadioButton2 1 单选按钮组件是一组互斥按钮 即我们一次只能选择其中的一个选项 选项的选取只需要单击即可 ButtonGroup用于创建按钮组JRadioButton对象可使用下列构造函数创建 JRadioButton JRadioButton Iconicon JRadioButton Icon booleanselected JRadioButton Stringtext JRadioButton Stringtext booleanselected JRadioButton Stringtext Iconicon JRadioButton Stringtext Iconicon booleanselected 23 单选按钮JRadioButton2 2 例 使用按钮组ButtonGroupgroup newButtonGroup JRadioButtonbutton1 newJRadioButton EAST true JRadioButtonbutton4 newJRadioButton NORTH false 为了指定单选按钮的初始选项 我们在新建JRadioButton对象时 将其构造函数的第二个参数设置为 true 同时 其他按钮对象的第二个参数被设置为 false 24 单选按钮使用示例 通过选择单选按钮中的选项来设置标签组件的内容 由标签组件显示我们的选择 程序代码见RadioButtonExample java 运行结果如下 25 复选框JCheckBox2 1 复选框组件可以进行多重选择 即我们能够选择其中的多个选项 如果要取消或选取某选项 可以单击此选项 和单选按钮不同 复选框允许用户选择多个选项 我们通过单击复选框来选取该选项 再单击一下 则取消选取 建立复选框组件对象需要使用标签来表明该复选框的含义 标签在复选框构造器里进行设置 对复选框是否被选取可以通过isSelected方法进行状态判断 例 boldCheck newJCheckBox Bold 新建复选框 italicCheck newJCheckBox Italic 新建复选框 boldCheck isSelected 判断 mathCheck 复选框是否被选定 26 复选框JCheckBox2 2 当用户点击一个复选框时 就会触发一个动作事件 你可以设置动作监听器 例如 两个按钮共享同一个动作监听器 ActionListenerlistener Bold addActionListener listener italic addActionListener listener 监听器的actionperformed方法 publicvoidactionperformed ActionEventevent intmode 0 if bold isSelected mode Font BOLDif italic isSelected mode Font ITALIClabel setFont newFont Serif mode FONTSIZE 27 复选框使用示例 选择字体风格 程序代码见CheckBoxExample java 运行结果如下 28 列表框组件JList3 1 列表框组件允许用户从一个列表中选择一个或多个条目 选择列表框中的多个条目有两种方式 续条目选择和间断条目选择 JList类既可显示字符串 也可显示图标JList不支持双击 MouseListener可用于解决双击问题构造函数 publicJList 使用空模型构造JListpublicJList ListModeldataModel 构造一个列表 用它显示指定模型中的元素 publicJList Object listData 构造一个列表以显示指定数组listData的元素 29 列表框组件JList3 2 建立列表框前 需要指定所显示的列表条目 String courses Math English Physics Chemic Biology Politics JListcourseList newJList courses JList本身不支持滚动 如果列表框比较长 而显示屏幕比较小 可以设置列表中显示的行数 同时使用滚动条 courseList setVisibleRowCount 4 JScrollPanelistScrollPane newJScrollPane courseList 30 列表框组件JList3 3 用户选择列表框条目时 列表框就会产生选择事件 将列表选择监听器ListSelectionListener添加给列表组件 并在该监听器中实现valueChanged方法 courseList addListSelectionListener newcourseListener privateclasscourseListenerimplementsListSelectionListener publicvoidvalueChanged ListSelectionEventevent 获得用户所选择的列表框条目以及条目所在的索引号需要使用getSelectedValues方法和getSelectedIndices方法 Object selectedCourses courseList getSelectedValues int selectedIndexCourses courseList getSelectedIndices 31 列表框组件使用示例 在给定的科目中选择多门课程 程序代码见ListExample java 运行结果如下 32 组合框JComboBox3 1 组合框将文本框和下拉列表框结合起来 使得用户可以在一组预定义的选项中选择一个条目 而且能够修改选项内容 构造函数如下 publicJComboBox 此构造函数使用缺省数据模型创建JComboBoxpublicJComboBox ComboBoxModelasModel 使用现有ComboBoxModel中的项目创建组合框publicJComboBox Object items 用指定数组元素创建组合框新建一个有内容的组合框既可以象列表框那样指定数组 也可以采用向组合框对象里加入条目的方法 对组合框是否能够被编辑也可以进行设置 新建组合框 jobsBox newJComboBox jobsBox setEditable true 设置组合框是否能够被编辑 jobsBox addItem job1 jobsBox addItem job2 33 组合框JComboBox3 2 组合框的内容是可以动态变化的 addItem Objectitem 方法能够把条目添加到列表的末尾 insertItermAt Objectitem intindex 方法将把新条目添加到列表的任何位置 removeItem Objectitem 方法和removeItemAt intindex 方法将能够删除指定条目 removeAllItems 方法将删除所有条目 getSelectedItem 方法返回当前被选择的条目jobsBox insertItermAt job7 6 在第7个位置增加 job7 条目 jobsBox removeItem job7 删除 job7 条目 jobsBox removeItemAt 5 删除第6个条目 即 job6 jobsBox removeAllItems 删除所有条目 34 组合框JComboBox3 3 当选择一个条目时 组合框就产生一个事件 对事件的监听需要添加事件监听器 并实现actionPerformed方法 增加事件监听器 jobsBox addActionListener newjobsListener privateclassjobsListenerimplementsActionListener publicvoidactionPerformed ActionEventevent 当组合框的选择事件发生时 可以通过getSelectedItem方法来获取当前被选择的条目 ObjectselectedJob jobsBox getSelectedItem 35 组合框使用示例 应用组合框来进行选择职业 程序代码见ComboBoxExample java 运行结果如下 36 滑块JSlider3 1 滑块组件一般有一个连续区间和可拖动的滑块 用户可以通过拖动滑块在一个区间范围里进行选择 构造函数如下 JSlider JSlider intdirection JSlider intmin intmax JSlider intmin intmax intinitialValue JSlider intmin intmax intinitialValue JSlider intdirection intmin intmax intinitialValue 使用给定方向 最小值 最大值和初始值来构造一个水平滑块参数 direction下面几个常量之一 SwingConstants HORIZONTAL或者SwingConstants VERTICAL 默认为前者Min max滑块的最小值和最大值 默认分别为0和100initialValue滑块的初始值 默认为50JSliderageSlider newJSlider ageSlider newJSlider SwingConstants VERTICAL 0 120 20 37 滑块JSlider3 2 可以为滑块增加标尺 setMajorTickSpacing intunits 为滑块设置一个大标尺setMinorTickSpacing intunits 为滑块设置一个小标尺大标尺和小标尺是独立的 Units指滑块值而非像素值显示标尺 setPaintTicks booleanb b为true时显示强制滑块对齐标尺 setSnapToTicks booleanb b为true时强制对齐 38 滑块JSlider3 3 当滑块被拖动时 滑块的值将发生变化 触发ChangeEvent事件 滑块组件的事件监听器要实现ChangeListener接口 并实现此接口中的stateChanged方法 AgeListenermyAgeListener newAgeListener ageSlider addChangeListener myAgeListener privateclassAgeListenerimplementsChangeListener publicvoidstateChanged ChangeEventevent 滑块值发生变化时 使用getValue方法来获得滑块值 myTextField setText sourceSlider getValue 39 滑块使用示例 在进行年龄输入时 使用滑块进行直观的选择 程序代码见SliderExample java 运行结果如下 40 边界Border 当界面中的组件比较多时 需要从视觉上将组件分隔 通用的办法是为面板设置边界 并将需要分隔的组件添加到该面板中 可选的边界风格包括 低斜面 凸斜面 蚀刻 直线 不光滑 空 只是在组件周围创建一些空白地方 创建边界需要调用BorderFactory类的静态方法 当需要给边界增加标题以提示时 可以使用BorderFactory的createTitledBorder方法 初始化带标题的空边界 Borderborder BorderFactory createEmptyBorder Bordertitled BorderFactory createTitledBorder border Bordertypes 当创建好需要的边界后 就可以把边界对象添加到组件中 buttonPanel setBorder titled 41 边界使用示例 各种边界的不同效果 程序代码见BorderExample java 运行结果如下 42 菜单 菜单显示项目列表 指明各种任务 选择或单击某个选项时会打开另一个列表或子菜单 Swing菜单由菜单栏 菜单和菜单项构成 菜单栏 位于窗口顶部 是所有菜单和菜单项的根 43 典型的菜单 44 Swing菜单组件 45 菜单栏JMenuBar JMenuBar是可通过JFrame JWindow或JInternalFrame的根窗格添加到容器中的组件 由多个菜单JMenu组成 每个JMenu在JMenubar中都表示为字符串 JMenuBar需要两个附加类 SingleSelectionModel类 跟踪当前选定的菜单LookAndFeel类 负责绘制菜单栏以及对在其中发生的事件作出响应构造函数只有一个 JMenuBar add JMenuc 将菜单添加到菜单栏中 46 菜单JMenu2 1 JMenu在JMenuBar下以文本字符串形式显示 而在用户单击它时 则以弹出式菜单显示 JMenu具有两个附加类 JPopupMenu 用于显示JMenu的菜单项LookAndFeel 负责绘制菜单栏中的菜单以及对在其中发生的所有事件作出响应构造函数 JMenu JMenu Actiona JMenu Strings 以给定的字符串构造一个菜单对象JMenu Strings booleanb 47 菜单JMenu2 2 JMenu类的常用方法 add JMenuItemitem 添加一个菜单项 或菜单 add Stringlabel 添加一个菜单项到菜单中add Actiona 添加一个菜单项并且为其关联一个动作addSeparator 添加一个分割符到菜单中inset JMenuItemmenu intindex 把一个菜单项 或子菜单 添加到菜单的指定位置处insertSeparator intindex 添加一个分割符到菜单中的指定位置上remove intindex 从菜单中删除指定的菜单项remove JMenuItemitem 从菜单中删除指定的菜单项 48 弹出式菜单JPopupMenu2 1 是一种不固定在菜单栏中 可以随处浮动的菜单构造函数JPopupMenu JPopupMenu Stringlabel 指定标题创建必须明确调用show方法来显示弹出式菜单show Componentinvoker intx inty 参数 invoker弹出式菜单在其内显示的组件x y左上角的坐标 使用invoker的坐标 popup show panel x y 49 弹出式菜单JPopupMenu2 2 通常当用户点击某个鼠标键时 弹出菜单就会出现 这就是所谓的弹出触发器 在WINDOWS中 弹出触发器通常是鼠标右键 建立弹出触发器的步骤 安装一个鼠标监听器在鼠标监听器中添加如下代码 PublicvoidmousePressed MouseEventevent If event isPopupTrigger popup show event getComponet event getx event gety 当用户点击鼠标右键时 会在鼠标位置处显示弹出菜单 50 菜单项JMenuItem 菜单项JMenuItem是JMenu或JPopupMenu中的一个组件 以文本字符串形式显示 可以具有图标 它同按钮非常相似JMenuItem的外观可以修改 如字体 颜色 背景 边框等构造函数 JMenuItem JMenuItem Actiona JMenuItem Iconicon JMenuItem Stringtext JMenuItem Stringtext Iconicon JMenuItem Stringtext intmnemonic 例 JMenuItemcutItem newJMenuItem Cut newImageIcon cut gif 51 复选框菜单项JCheckBoxMenuItem2 1 这种菜单项在文本旁边显示一个复选框 当用户选择该菜单项时 该菜单项会自动在选择和未选择之间切换构造函数 JCheckBoxMenuItem JCheckBoxMenuItem Iconicon JCheckBoxMenuItem Stringtext JCheckBoxMenuItem Stringtext booleanb JCheckBoxMenuItem Stringtext Iconicon JCheckBoxMenuItem Stringtext Iconicon booleanb JCheckBoxMenuItem Actiona 例 JCheckBoxMenuItemmyitem newJCheckBoxMenuItem read only menu add myitem 52 复选框菜单项JCheckBoxMenuItem2 2 使用这种菜单项 你应该使用isSelected方法来测试菜单项的当前状态 这意味着你应该保留一个实例变量保存该菜单项的引用 设置状态的方法是setSelectedbooleanisSelected 返回该条项的选择状态 true为被选定 voidsetSelected booleanstate 设置该条项的选择状态 53 单选按钮菜单项JRadioButtonMenuItem2 1 这种菜单项在文本旁边显示一个单选按钮构造函数 JRadioButtonMenuItem JRadioButtonMenuItem Iconicon JRadioButtonMenuItem Stringtext JRadioButtonMenuItem Stringtext booleanb JRadioButtonMenuItem Stringtext Iconicon JRadioButtonMenuItem Stringtext Iconicon booleanb 你必须把它们添加到一个按钮组中 当组中的一个按钮被选择以后 所有的其它按钮都自动成为未选择项例 ButtonGroupgroup newButtonGroup JRadioButtonMenuIteminsitem newJRadioButtonMenuItem Insert Insitem setSelected true JRadioButtonMenuItemovrtype newJRadioButtonMenuItem Overtype group add insitem group add ovrtype menu add insitem menu add ovrtype 54 单选按钮菜单项JRadioButtonMenuItem2 2 使用这种菜单项 你应该使用isSelected方法来测试菜单项的当前状态 这意味着你应该保留一个实例变量保存该菜单项的引用 设置状态的方法是setSelectedbooleanisSelected 返回该条项的选择状态 true为被选定 voidsetSelected booleanstate 设置该条项的选择状态 55 创建菜单2 1 四个步骤 创建菜单栏 创建菜单以及子菜单 创建菜单项 并将菜单项加入到子菜单或菜单中 将子菜单加入到菜单中 将菜单加入到菜单栏中 a 创建菜单栏 并将菜单栏加入到框架中 JMenuBarmenuBar newJMenuBar Frame setJMenuBar menuBar b 创建 File 菜单 Edit 菜单和 View 菜单 JMenufileMenu newJMenu File JMenueditMenu newJMenu Edit JMenuviewMenu newJMenu View b 创建子菜单 JMenuoptionMenu newJMenu Option 56 创建菜单2 2 c 通过Action对象新建 New 菜单项 并添加事件监听器 newItem fileMenu add newShowAction New c 通过指定菜单项对象新建 Paste 菜单项 pasteItem newJMenuItem Paste P d 将菜单项加入到子菜单或菜单中 将子菜单加入到菜单中 将菜单加入到菜单栏中 fileMenu add newItem editMenu add pasteItem viewMenu add optionMenu menuBar add fileMenu menuBar add editMenu menuBar add viewMenu 57 创建复选框和单选按钮菜单项 和创建一般的菜单项几乎一样 只需要注意一下复选框和单选按钮的不同构造函数以及单选按钮组的构建 创建单选按钮菜单项 Forward 并将 Forward 菜单项加入到 Search 菜单中 ButtonGroupgroup newButtonGroup forwardItem newJRadioButtonMenuItem Forward group add forwardItem searchMenu add forwardItem 创建复选框菜单项 ToolBar 并加入到子菜单中 JCheckBoxMenuItemtoolItem newJCheckBoxMenuItem ToolBar optionMenu add toolItem 58 快捷键和加速器 快捷键显示为带有下划线的字母 加速器则显示为菜单项旁边的组合键 快捷键用来从当前打开的菜单中选择一个子菜单或菜单项 而加速器是在不打开菜单的情况下选择菜单项的快捷键 例 设置菜单的快捷键 fileMenu setMnemonic F 设置 Exit 菜单项的快捷键为 T JMenuItemexitItem newJMenuItem Exit T 设置 Exit 菜单项的加速器为 Ctrl T exitItem setAccelerator KeyStroke getKeyStroke KeyEvent VK T InputEvent CTRL MASK 加速器只能关联到菜单项 而不是菜单 加速器键实际上只是直接激活同菜单项关联的事件而已 59 启用和禁用菜单项 一个菜单项能否被选取取决于菜单项的启用或禁用状态启用或禁用菜单项需要使用setEnabled方法 saveItem setEnabled false 启用或禁用菜单项用两种策略 第一种是每当环境发生改变 你就对相关的菜单项和动作调用setEnabled方法 例如 只要一个文档以只读形式打开 你就要禁用Save和Saveas菜单项另外一种方法是 你可以在显示菜单之前为它们进行设置 你必须为 menuselected 事件注册一个监听器 javax swing event包定义了一个MenuListener接口 它有如下3个方法 voidmenuSelected MenuEvente 在菜单被选择但尚未打开之前被调用voidmenuDeselected MenuEvente 在菜单被取消选择并且已被关闭之后被调用voidmenuCanceled MenuEvente 在菜单被取消时被调用 如点击菜单以外的区域时 60 弹出式菜单 弹出式菜单的创建和菜单的创建基本相同 也需要新建一个弹出式菜单后再加入菜单项 例 创建弹出式菜单 popup newJPopupMenu 新建弹出式菜单中的 Cut 菜单项和监听器 cutItemPop newJMenuItem Cut C popup add cutItemPop 61 菜单使用示例 菜单的用法 程序代码见MenuExample java 运行结果如下 62 对话框2 1 对话框用于显示信息或从用户收集信息对话框分为模式对话框和无模式对话框模式对话框必须在用户处理完后才允许用户与主窗口继续进行交互 无模式对话框允许用户同时在对话框和程序剩余部分中输入信息 Swing有一个方便的类JOptionPane 该类能够让你在不编写任何专门对话框代码的情况下弹出一个简单的对话框 JOptionPane有以下4种静态方法来显示这些简单的对话框 showMessageDialog 显示一条消息等待用户点击OK showConfirmDialog 显示一条消息并等待确认 showOptionDialog 显示一条消息并等待用户在一组自定义选项中的选择 showInputDialog 显示一条消息并等待用户的输入 63 对话框2 2 以showConfirmDialog为例 intselection JOptionPane showConfirmDialog DialogFrame this 父窗口 Areyousure Logout 消息以及对话框标题JOptionPane OK CANCEL OPTION 底部按钮类型JOptionPane WARNING MESSAGE 消息类型底部按钮的类型和对话框有密切的关系 对于showMessageDialog和showInputDialog对话框来说 只能有一组标准按钮 分别是OK和OK CANCEL 对于showConfirmDialog 按钮可以包括四种 DEFAULT OPTIONYES NO OPTIONYES NO CANCEL OPTIONOK CANCEL OPTION 64 对话框使用示例 对话框的使用 当单击 退出 按钮时 将弹出对话框 同时原先的框架窗口将不能被激活 必须选择对话框中的一个选项才能够退出对话框 程序代码见DialogExample java 运行结果如下 65 创建自己的对话框 步骤 写一个类继承JDialog类 在你的对话框类的构造函数中 调用基类JDialog的构造函数 你需要告诉它拥有者框架 对话框显示在其上的一个框架窗口 对话框的标题 以及一个指明对话框是模式的还是无模式的布尔标志 如果你不在乎对话框的显示位置 那么拥有者框架的值可设为null 典型的窗口系统都要求每个弹出窗口都为另一个框架所拥有 因此 Swing构造了一个公用的隐藏框架作为所有拥有者为null的对话框的拥有者 添加该对话框的用户界面组件 添加事件处理器 设置对话框的大小 66 总结
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!