




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文来自/space.php?uid=548757&do=blog&id=33995使用Swing组件一本章要点l 框架 框架是一个图形界面程序的主窗口 在Java中,每个具有图形界面的程序至少要有一个框架,小程序有时也会使用框架 框架是由边框、标题栏、最大化、最小化、还原、移动、关闭按钮、系统菜单,以及内容窗格组成 内容窗格是框架的核心区域,主要的图形界面组件、菜单栏、工具栏都在内容窗格中 框架是一个程序的主窗口,每个具有图形界面的程序都至少要有一个框架 如果程序中还有其它窗口,并且这些窗口依赖于框架的,则应使用对话框(JDialog) 如果要使其它窗口显示在框架的内部,则应该使用内部框架(JInternalFrame) 内部框架虽然和框架很象,但它不是顶级容器组件,而是专用的容器组件 框架是JFrame类的对象。创建并显示一个框架的步骤如下: 创建一个JFrame对象,此时框架尚未显示 在添加了组件之后,调用pack函数排列组件 调用它的setVisible函数以显示框架 FrameDemoFrame frame = new FrameDemoFrame(); frame.setTitle(FrameDemo - 框架功能演示); frame.pack(); frame.setVisible(true); 标题用来描述程序,它显示在框架的标题栏上,以及系统的任务栏上 有两种设定框架标题的方法l 利用setTitle函数设定标题l 在构造函数中设定标题 调用框架的setTitle函数,如下所示:frame.setTitle(FrameDemo - 框架功能演示); 利用setIconImage函数为程序设置图标String imgURL = myicon.gif;ImageIcon icon = new ImageIcon(imgURL);frame.setIconImage(icon.getImage(); 关闭程序的方法1:将关闭窗口操作设为退出程序: frame.setTitle(FrameDemo - 框架功能演示); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); 参数代表关闭时的操作,可以有如下值:l WindowConstants.DO_NOTHING_ON_CLOSE:不做任何事,用窗口监听器进行关闭工作l WindowConstants.HIDE_ON_CLOSE:隐藏界面,这是框架和对话框对象的默认操作l WindowConstants.DISPOSE_ON_CLOSE:隐藏窗口,并且释放它使用的资源,这是内部框架对象的默认操作l JFrame.EXIT_ON_CLOSE:退出应用程序,这种退出方式只能用于应用程序的主框架中 方法2:编写窗口监听器类,在窗口关闭事件中关闭程序,如下面的代码所示: frame.setDefaultCloseOperation( WindowConstants.DO_NOTHING_ON_CLOSE); frame. addWindowListener(new FrameDemoFrame_WindowListener_Closing(frame); 例题:在退出程序时,要求用户确认: public void windowClosing(WindowEvent e) int returnValue; returnValue = JOptionPane.showConfirmDialog(null, 确实要退出程序吗?, 退出程序, JOptionPane.YES_NO_OPTION); if (returnValue = JOptionPane.YES_OPTION) System.exit(0); 调用此函数时会自动弹出一个对话框,要求用户确定是否退出程序 在框架中加入组件的方法: 用getContentPane函数获得内容窗格 在内容窗格中用add函数加入各种组件JPanel contentPane;contentPane = frame.getContentPane();JPanel panel1 = new JPanel();contentPane.add(panel1);panel1.add(new JLabel(请点击下面的按钮:);panel1.add(new JButton(关闭); 主程序框架一般还有菜单栏。主程序中的菜单栏通过setJMenuBar函数来设定: JMenuBar menuBar = new JMenuBar(); frame.setJMenuBar(menuBar); JMenuBar是菜单对象,实际中还需要在其中加入菜单项和菜单子项 关于菜单,后面还会有详细介绍 可以通过setBounds函数来实现setSize, setLocation这两个函数的功能:public void setBounds(int x, int y, int width, int height);Rectangle r = new Rectangle(int x, int y, int width, int height);public void setBounds(Rectangle r); setLocationRelativeTo函数,它的作用是将框架放到屏幕上一个现有的组件旁边:public void setLocationRelativeTo(Component c); 其中c是一个已经在屏幕上显示的组件 此函数将框架放到组件c的旁边,放置原则是让放置的框架尽量靠近屏幕中间 如果函数参数为null,那么就将框架居中放置,这是常用的一种将窗口居中放置的方法 对话框是另一类常用的顶级容器 对话框与框架非常相似,复杂的对话框也能够实现框架的几乎所有功能 实际中,常用的是界面简单、功能高度特化的对话框l 消息框:显示一条消息l 选择框:让用户进行选择l 文件选择框:选择文件进行打开、保存等操作l 颜色选择框:从调色板中选择颜色 每个对话框都必须依附于框架l 框架关闭以后,所有依附它的对话框也会关闭l 当框架最小化成一个图标的时候,所有依附它的对话框也会自动隐藏l 当框架还原的时候,对话框又会自动显示l 这些操作由Swing自动实现 本小节主要介绍通用的对话框(JDialog)和消息框(JOptionPane) 例:在主框架程序中添加一个通用对话框,里面有一个文字标签和一个按钮: 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); 对话框分为有模式的和无模式的两种类型 有模式的对话框在显示时,将屏蔽用户向对话框所属的主框架键入的所有内容,用户不能对主框架进行任何操作 无模式对话框在显示时,用户仍然可以用鼠标点击主框架,在主框架里输入内容,或移动主框架 缺省的JDialog对话框都是无模式对话框 如果要创建有模式对话框,可以在构造函数里增加一项如下: JDialog dialog = new JDialog(this, 对话框, true); 也可以用setModal函数来设置对话框是有模式的还是无模式的: dialog.setModal(true); / 将对话框设置成有模式的 dialog.setModal(false); / 将对话框设置成无模式的 消息框(JOptionPane)是一种非常简洁、专用的对话框。 例:弹出一个提示消息框:JOptionPane.showMessageDialog(frame, 修改已经保存到文件中。); 消息框中的图标:l 预设的图标有4种:错误图标、消息图标、警告图标和提问图标l 可以显示自己定制的图标 不同界面风格下的图标风格:l Windows风格l Java风格l CDE/Motif风格l GTK+风格l 对话框 常用消息框的调用: 消息框:利用静态函数showMessageDialog显示 确认框:利用静态函数showConfirmDialog显示 选择框:利用静态函数showOptionDialog显示 输入框:利用静态函数showInputDialog显示l 对话框 showMessageDialog(显示消息框): 消息框是最简单的一种对话框,它的作用只是显示一条消息,它只有一个“确认”按钮,用以关闭消息框。 通过修改showMessageDialog函数的参数,可以修改消息框显示的消息、图标和消息框的标题,下面列出常用的消息框形式 showMessageDialog是一个静态成员函数,可以从类直接调用,它有三种形式:static void JOptionPane.showMessageDialog(Component parentComponent, Object message)static void JOptionPane.showMessageDialog(Component parentComponent, Object message, String title, int messageType)static void JOptionPane.showMessageDialog(Component parentComponent, Object message, String title, int messageType, Icon icon) int messageType:消息框类型,有下列值: showConfirmDialog(显示确认框): 显示一个对话框,让用户选择“是”或“否”,用户选择的结果在返回值中给出:int choice = JOptionPane.showConfirmDialog(frame, 你是否真的要删除文件?); 执行程序,在屏幕上显示的确认框如下: 点击“是”,“否”,“撤销”都会关闭确认框,同时返回一个值:l “是”对应的返回值是JOptionPane.YES_OPTIONl “否”对应的返回值是JOptionPane.NO_OPTIONl “撤销”的返回值JOptionPane.CANCEL_OPTION 可以通过用条件语句比较返回值来确认用户点击的是哪个按钮,再进行下一步操作。 showConfirmDialog是一个静态成员函数,可直接通过类来调用 showOptionDialog(显示选择框): 用于显示定制的对话框,它是参数最多、使用最灵活的JOptionPane类对话框 可以在对话框上显示多个按钮 每个按钮的文字可以自己定制 对话框中还包括图标、提示字符串 甚至可以在对话框中加入组件 例:一个定制的对话框:String options = 小说, 诗歌, 不告诉你;int choice = JOptionPane.showOptionDialog(frame, 如果将你放逐到荒岛,你最希望带本什么书?, 问卷调查, JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, new ImageIcon(about.png), options, options2); showInputDialog(显示输入框): 该函数弹出一个对话框,提示用户输入一行文字,或者从下拉框中选择一项 输入框有很多用法,常用的有:l 输入一行文字l 带有缺省值的文本输入l 从下拉框中选择一项内容 例,用于输入文字的对话框:String rtnStr = JOptionPane.showInputDialog(frame, 如果将你放逐到荒岛,你最希望带本什么书?); 输入文字,然后回车或单击“确认”,输入的文字会保存在rtnStr所指向的字符串里 如果按了“Esc”键,或单击“撤销”,那么键入的文字不会保存,rtnStr的值为空 可以在输入框中给出输入文字的默认值:String rtnStr = JOptionPane.showInputDialog(frame, 如果将你放逐到荒岛,你最希望带本什么书?, 小说); 这条语句在屏幕上显示的对话框如下: 也可以定制对话框的标题和图标类型:String rtnStr = JOptionPane.showInputDialog(frame, 如果将你放逐到荒岛,你最希望带本什么书?, 问卷调查, JOptionPane. WARNING_MESSAGE); 在屏幕上显示的对话框如下,注意此时不能设定输入的默认字符串。 可以用下拉框的形式选择内容:String inputOptions = 小说, 诗歌, 不告诉你;Object rtnStr = JOptionPane.showInputDialog(this, 如果将你放逐到荒岛,你最希望带本什么书?, 问卷调查, JOptionPane. QUESTION_MESSAGE, null, inputOptions, 诗歌); 例:带缺省值的定制文本框:Object rtnStr = JOptionPane.showInputDialog(this, 如果将你放逐到荒岛,你最希望带本什么书?, 问卷调查, JOptionPane.QUESTION_MESSAGE, null, null, 诗歌);l 面板 面板是最常用的容器组件。缺省情况下,面板上除了背景色以外没有任何东西 可以用多个面板,配合不同的布局管理器来配置控件在界面上的布局l 滚动条面板 滚动条面板可以在屏幕上有限的区域内显示更大范围的内容, 相应的代码如下:JScrollPane scrollPane = new JScrollPane(textArea1, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);scrollPane.setPreferredSize(new Dimension(250, 250); 创建滚动条面板的过程分两步:l 第一步,创建一个JScrollPane对象,在构造函数中需要给出放在面板里的控件l 第二步,设置面板的初始大小l 分隔条面板 分隔条面板将一个面板分为两部分,两部分之间被一个分隔条隔开,用户可以拖动分隔条来改变左右面板的大小 分隔条面板由JSplitPane对象实现 左右两部分分别是两个子面板,子面板一般是滚动条面板 下面的代码用来创建分隔条面板:JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, scrolll, scroll2);split.setDividerSize(8);split.setOneTouchExpandable(true);getContentPane().add(split, BorderLayout.CENTER);l 标签页面板 创建标签页面板的程序代码如下:JTabbedPane tabbed = new JTabbedPane();tabbed.addTab(第一页, null, scrolll, 这是第一页内容);tabbed.addTab(第二页, null, scroll2, 这是第二页内容); 第一步:创建一个JTabbedPane对象,使用缺省的构造函数即可 第二步:调用addTab函数将子面板一个个加到标签页中l 工具栏 工具栏是图形界面程序常用的组件,它将一组按钮排成一行,放在程序的顶端 工具栏一般作为菜单栏的补充,为菜单栏中常用的命令提供一种快捷的执行方法 工具栏通过JToolBar对象来实现:JToolBar toolBar = new JToolBar();toolBar.add(button1);toolBar.add(button2);frame.getContentPane().add(toolBar, BorderLayout.PAGE_START); 工具栏中还可以设置分隔条,分隔条将按钮分隔开,以达到分组的目的: 分隔条通过addSeparator函数来添加toolBar.add(button2);toolBar.addSeparator();toolBar.add(button3);l 内部框架内部框架常用于多文档界面,它的特点是在主框架的内部还有一系列子框架: 创建内部框架的基本步骤如下: (1) 创建内部框架对象JInternalFrame subFrame1 = new JInternalFrame( 文档1, true, true, true, true); 内部框架对象的构造函数有5个参数:l 参数1:显示在子框架标题栏上的名称;l 参数2:设定子框架能否改变大小;l 参数3:设定子框架能否关闭;l 参数4:设定子框架能否最大化;l 参数5:设定子框架能否缩成一个图标。需要注意的是,子框架缩成的图标是在主框架的左下角,而不会在操作系统的任务栏出现: (2) 设置子框架对象的属性 子框架的属性包括子框架大小、位置,显示子框架,将子框架设置成选中状态,如下面的代码所示: subFrame1.setSize(300, 300); subFrame1.setLocation(30, 30); subFrame1.setVisible(true); try subFrame1.setSelected(true); catch (java.beans.PropertyVetoException e) (3) 将子框架放在桌面面板上 子框架不能放在普通的面板上,必须放到桌面面板(JDesktopPane)上 将桌面面板作为主框架的内容窗格,再将子框架放到桌面面板上,如下面的代码所示: JDesktopPane desktop = new JDesktopPane(); desktop.setBackground(new Color(160, 160, 160); desktop.add(subFrame1); setContentPane(desktop); 通过这三步以后,内部框架界面就建立了 内部框架不是真正的顶级容器框架 但它也有自己的内容窗格,可以在其中放置各种面板和控件 内部框架常用于多文档界面,例如同时打开多个文本文件或多个图片的情况l 分层窗格 分层窗格是一个可以有多层的容器,作用是让相互重叠的组件可以按照它们重叠的次序显示,上层的组件覆盖在下层组件之上l 根窗格 根窗格直属于顶级的框架或对话框,包含了内容窗格和菜单栏,以及分层窗格、玻璃窗格等不可见的功能窗格,它的作用是管理所有这些窗格第十三章 使用Swing组件二本章要点基本控件l 基本控件 基本控件包括:l 按钮,单选框、复选框、下拉框、列表框、菜单、文本框 它们是组成图形用户界面的原子控件,它们的作用主要是从用户那里得到输入,同时也显示一些简单的状态。l 按钮 Swing中的按钮有三种类型:l 普通按钮(JButton)、单选框(JRadioButton)、复选框(JCheckBox) 这三类按钮都从AbstractButton(抽象按钮)类继承而来 它们的外形、功能各不相同,下面分别介绍这三类按钮l 普通按钮 与按钮有关的代码如下: panel = new JPanel(); b1 = new JButton(向后, new ImageIcon(prev.gif); b2 = new JButton(显示当前); b3 = new JButton(向前, new ImageIcon(next.gif); panel.add(b1); panel.add(b2); panel.add(b3); 第1、3个按钮是文字与图片混合显示按钮,第2个按钮是文字按钮 在调用缺省构造函数创建按钮之后,可以调用setText和setIcon函数为按钮设置显示文字和图标,函数形式如下:JButton.setText(String text);JButton.setIcon(Icon defaultIcon); 按钮有两个常用的属性:l 可用性(enable)、缺省按钮(default button) 按钮的可用性通过setEnabled函数来设置,这个函数只有一个参数:l 如果参数值为真,则按钮可用l 如果参数值为假,则按钮变成灰色,不可用 isEnabled函数判断一个函数是否可用 例题:将按钮1设成可用:if (!button1.isEnabled() button1.setEnabled(true); 用setDefaultButton函数来设置缺省按钮,用getDefaultButton函数获得缺省按钮 下面的例子演示了如何设置缺省按钮:frame.getRootPane().setDefaultButton(button1); 缺省按钮在按钮的边缘会有一条间隙:基本控件l 单选框 单选框(JRadioButton)在图形界面上显示为若干小圆点 单选框的作用是在几个选项中选一项,且只能选一项。 产生单选框的步骤: (1) 建立单选框对象JRadioButton radio1 = new JRadioButton(鱼);JRadioButton radio2 = new JRadioButton(熊掌, true); 只有分为一组的单选框才有单选的关系 将单选框分组的代码如下:ButtonGroup group = new ButtonGroup();group.add(radio1);group.add(radio2); (3) 将单选框放到面板中panel.add(radio1);panel.add(radio2); 对于这种情况,就不需要给单选框添加监听器了,如下面的代码:if (radio1.isSelected() System.out.println(你选择了鱼。);if (radio2.isSelected() System.out.println(你选择了熊掌。); 在“确定”按钮的事件处理函数中,调用单选框的isSelected函数查询它是否被选中l 复选框 复选框(JCheckBox)与单选框的作用相似,也是选择一些选项,不同的是这些选项之间没有相互排斥的关系 复选框的外形是方形小框 ,如果你选中了一个复选框,小框中会出现一个对勾 。 创建复选框的代码如下:JCheckBox check1 = new JCheckBox(音乐);JCheckBox check2 = new JCheckBox(文学);JCheckBox check3 = new JCheckBox(体育, true);JCheckBox check4 = new JCheckBox(电视);JCheckBox check5 = new JCheckBox(旅游, true); 复选框的创建分两步:l 创建一个复选框控件对象l 将复选框控件放到面板上 在函数中,调用复选框的isSelected函数查询它是否被选中,如下面的代码所示: System.out.print(你的兴趣爱好有:); if (check1.isSelected() System.out.print(音乐 ); if (check2.isSelected() System.out.print(文学 ); if (check3.isSelected() System.out.print(体育 ); if (check4.isSelected() System.out.print(电视 ); if (check5.isSelected() System.out.print(旅游 );l 下拉框 下拉框又叫组合框(JComboBox),是一种多个选项中选择一个的组件 从功能上看,它和前面的单选框很像,但是下拉框平时只占用一行文本的空间 只有当用户点击时才会向下弹出所有的选项,因此它比单选框要节省空间 下拉框可以很方便地增加、删除选项 下拉框分为两类:l 不可编辑的下拉框:用户只能从预设的项中选择l 可编辑的下拉框:允许用户编辑、修改文本 下拉框由两部分组成:l 文本框,它一直存在,显示用户选择的文本;l 弹出式列表,显示所有预设的选项,它只有在用户点击下拉框右侧的三角形按钮时才会出现String comboStr1 = 10岁以下, 1120岁, 2030岁, 3040岁, 4050岁, 5060岁, 60岁以上;JComboBox combo1 = new JComboBox(comboStr1);panel.add(combo1); 创建下拉框的步骤是:l 建立一个字符串数组,将所有预设的选项都存储在字符串数组中l 创建下拉框对象,将字符串数组放到下拉框中l 将下拉框对象放到面板上 创建可编辑的下拉框,需要调用setEditable函数设置下拉框的属性:String comboStr2 = 足球,篮球,羽毛球,乒乓球,象棋,围棋;JComboBox combo2 = new JComboBox(comboStr2);combo2.setEditable(true);panel.add(combo2); 当下拉框收起时,它变成一个文本框,你可以在其中输入文字 输入的内容只在当前有效,一般来说并不能成为预设的选项 与单选框、复选框一样,下拉框一般也是在用户点击“确定”按钮之后才处理其内容 getSelectedItem函数,得到选择的文本 getSelectedIndex函数,得到选择的项 下面这段代码演示了这两个函数的功能:System.out.println(你选择的体育运动是: + combo2.getSelectedItem();System.out.println(它是下拉框中的第 + combo2.getSelectedIndex() + 项); 对于不可编辑的下拉框,函数返回的是用户选择的内容;对于可编辑的下拉框,函数返回的是经用户编辑以后的文本; getSelectedIndex函数的作用是返回用户所选的选项的序号。序号是从0开始计数的 如果用户没有选任何项,则返回“-1”; 对于可编辑下拉框,如果用户手动修改了下拉框的内容,使它与任何一项预设的选项都不相同,则函数也返回“-1”; 还有两个函数也很常用:l getItemAt函数,获得某项选项的内容,l getItemCount函数,获得选项的数量。 这两个函数相结合,可以得到所有的预设选项,如下面的代码所示:for (int i = 0; i combo2.getItemCount(); i+) System.out.println(combo2.getItemAt(i); 下拉框还提供一系列函数用于添加、插入、删除选项,这些函数列举如下:/ 在预设选项列表的最后添加一项,anItem为添加的字符串对象void addItem(Object anItem);/ 在预设列表中插入一项,anItem为添加的字符串对象,index为插入的位置void insertItemAt(Object anItem, int index);/ 移去内容与anItem相同的预设选项void removeItem(Object anItem);/ 移去序号为index的预设选项void removeItemAt(int index);/ 移去所有的预设选项void removeAllItems();l 列表框 列表框的建立分以下三步: (1) 创建列表框对象 列表框是JList类的对象。与下拉框类似,在创建列表框对象时,一般需要在构造函数中通过一个字符串数组给出选项内容:String listStr = 足球,篮球,排球,网球,羽毛球,乒乓球,游泳,长跑,登山,象棋,围棋,桥牌;JList list = new JList(listStr); (2) 设置列表框属性 在创建列表框以后,需要设置它的三个属性:选项模式、布局方向以及可见的行数 选项模式有三种:l 单项选择:只能选择一项l 区间选择:可以选择一个区间范围l 多项选择:可以选择一个区间,或几个文件 选项模式通过setSelectionMode函数来设定,函数的参数表示三种选择模式:/ 设置为单项选择模式list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);/ 设置为区间选择模式list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);/ 设置为多项选择模式list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); 列表框的布局方向也有三种:l 横向换行:选项按行排列,一行放不下时换行放置,如果行数太多,就添加上下滚动的竖滚条;l 纵向换列:选项按列排列,一列放不下的话就换一列放置,如果列数太多,就添加左右滚动的横滚条;l 纵向布局:简单地将选项放在一列中,如果项目数太多,就添加竖滚条以上下滚动;l 缺省的布局方向是纵向布局 布局方向通过setLayoutOrientation函数来设置,该函数的参数表示三种布局方向,如下面的代码所示:/ 设置为横向换行list.setLayoutOrientation(JList.HORIZONTAL_WRAP);/ 设置为纵向换列list.setLayoutOrientation(JList.VERTICAL_WRAP);/ 设置为纵向布局list.setLayoutOrientation(JList.VERTICAL); 可见的行数表示列表框在没有滚动条的情况下所显示的行数,-1表示显示尽可能多的行,如下面的代码所示:list.setVisibleRowCount(-1); (3) 将列表框放到一个滚动条面板中 一般来说,列表框中包括的项目数都多于它能显示的数量,因此需要将列表框放到一个滚动条面板中,以便在需要时滚动 如下面的代码所示:JScrollPane scrollpanel = new JScrollPane(list);scrollpanel.setPreferredSize(new Dimension(250,80); 常用的处理列表框的函数:l getSelectedIndex,返回第一个选中的选项的序号l getSelectedValue,返回第一个选中的选项的值;l getSelectedIndices,返回一个整数数组,其中保存有所有选中的选项的序号;l getSelectedValues,返回一个对象数组,其中保存有所有选中的选项的内容;l isSelectedIndex,函数的作用是判断某一项选项是否被选中。 例题,列表框功能演示:System.out.println(你选择的第一项是: + list.getSelectedValue() + ,它的序号是: + list.getSelectedIndex();System.out.println(你选择的所有项的内容和序号列举如下:);int allIndices = list.getSelectedIndices();Object allValues = list.getSelectedValues();for (int i=0; iallIndices.length; i+) System.out.println( + allValuesi + + allIndicesi);System.out.println(检验第二项是否被选中: + list.isSelectedIndex(1);l 菜单 菜单几乎是每个应用程序的必备项,通过菜单将程序的功能组织在一起 菜单有两种表现形式:菜单栏和弹出式菜单l 菜单栏一般位于主框架的顶端,包含了程序的全部功能l 弹出式菜单只有在用户单击鼠标右键时才会出现,它给出了鼠标所指向组件的一些常用功能 在Swing中,菜单栏通过JMenuBar实现,弹出式菜单通过JPopupMenu实现。 建立菜单栏需要的三个步骤如下: (1) 建立菜单栏对象JMenuBar menuBar = new JMenuBar();frame.setJMenuBar(menuBar); 首先,建立一个JMenuBar对象, 随后,利用框架的setJMenuBar函数将菜单栏对象放到框架的顶端 (2) 建立菜单组 菜单组的含义是一组菜单项,通过点击菜单组可以显示它所包含的菜单项,如下图中的“文件”,“帮助”就是两个菜单组。 菜单组是JMenu对象,下面的代码建立了一个菜单组并把它加入到菜单栏中: JMenu menu; menu = new JMenu(文件); menuBar.add(menu); (3) 建立菜单项 菜单项具有特定的功能,菜单项一般都会加入动作监听器,以响应用户点击菜单项的动作,完成特定的功能 下面的代码将一个菜单项加入菜单组中,并为它添加动作监听器: JMenuItem menuItem; menuItem = new JMenuItem(打开文件); menuItem.addActionListener(new MenuActionListenerClass(this); menuItem.setActionCommand(打开文件); menu1.add(menuItem); 弹出式菜单通过JPopupMenu对象实现,建立弹出式菜单的过程与菜单栏大同小异:JPopupMenu popup;popup = new JPopupMenu();JMenuItem menuItem;menuItem = new JMenuItem(打开文件);menuItem.addActionListener(new MenuActionListenerClass(this);menuItem.setActionCommand(打开文件);popup.add(menuItem); 为了能够在鼠标右键单击时弹出菜单,需要建立一个鼠标监听器类,响应鼠标消息:class PopupListener extends MouseAdapter MenuBarDemo frame; public PopupListener(MenuBarDemo frame) this.frame = frame; public void mousePressed(MouseEvent e) if (e.isPopupTrigger() frame.popup.show(e.getComponent(), e.getX(), e.getY(); (2) 为组件添加鼠标监听器 下面的代码为文本区域组件添加鼠标监听器,当鼠标在文本区域内单击右键时,即可弹出相应的菜单:textArea1.addMouseListener(new PopupListener(this); 编译并运行程序,在文本区域里点击鼠标右键,可以看到弹出式菜单,l 文本框 文本框是一种非常简单、也非常常用的文本控件,它可以让用户输入一行简短的文字。l 不可编辑组件 在用户图形界面中,有些组件的作用仅仅是向用户提示,而不需要用户输入内容,这类组件称为不能编辑的组件 不可编辑的组件主要包括标签、进度条和工具提示l 标签 标签是最常用的组件,它的作用是在界面上显示一行文字 下面的代码创建并显示一个标签:JLabel label1 = new JLabel(文字标签);panel.add(label1); 标签也可以显示图片,或者同时显示图片和文字。图片是通过ImageIcon对象建立的,如下面的代码所示:ImageIcon icon1 = new ImageIcon(icon1.gif);JLabel label1 = new JLabel(icon1);JLabel label2 = new JLabel(图形标签, icon1, JLabel.CENTER); 需要注意的是,如果在标签的构造函数中同时给出文字和图片,那么还需要给出第三个参数,也就是标签的水平对齐方式 水平对齐方式有三种:l JLabel.LEFT:左对齐l JLabel.CENTER:中间对齐l JLabel.RIGHT:右对齐l 缺省的水平对齐方式是左对齐l 进度条 在传输文件或某些长时间的工作,为了及时向用户提示进度,可以使用进度条JProgressBar progressBar = new JProgressBar(0, 100);progressBar.setValue(0);progressBar.setStringPainted(true); 创建进度条的步骤为: 建立一个JProgressBar对象,对象的构造函数中设定进度条的最小、最大值 设置进度条的当前值,刷新进度条l 工具提示 工具提示是JComponent组件的一种性质 对于设置了工具提示的组件,当用户将鼠标在组件上停留一两秒之后,就会出现有关该组件功能的简单说明l 调色板 调色板是一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深圳外贸面试题及答案
- 模拟电网面试题及答案
- 水利安全c证考试试题及答案
- 远洋物业培训考试试题及答案
- 涉外摩托考试题及答案
- 5级考试题及答案
- 2025年广州市花都区狮岭镇芙蓉初级中学教师招聘考试笔试试题(含答案)
- 北京知识产权贯标培训课件
- 2025年佛山市南海区狮山镇英才学校教师招聘考试笔试试题(含答案)
- 医务人员营养培训考核试题(附答案)
- 【语文】小学四年级下册期末质量模拟试题测试卷
- 2025年甘南事业单位考试笔试试题
- 2025-2026学年高一上学期开学第一课主题班会课件
- 湖北省襄阳市枣阳市2024-2025学年七年级下学期期末考试英语试卷(含答案无听力部分)
- 存量贷款管理办法
- 产品供货方案及按时供货保证措施
- 科研协作管理办法
- 多胎减胎患者护理指南
- 幼儿思维培训课件
- 数字经济产业组织-洞察及研究
- 2025年中国美甲贴片行业市场全景分析及前景机遇研判报告
评论
0/150
提交评论