windowconstants智能制造是什么概念么

6被浏览809分享邀请回答1添加评论分享收藏感谢收起写回答JFrame窗体_百度百科
声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。
JFrame窗体
本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来吧!
窗体是一个组件容器,所有组件都必须有窗体去承载它们.JFrame是Swing技术中的窗体类,在开发应用程序时可以通过继承java.swing.JFrame类创建一个窗体,在这个窗体中添加组件,同时为组件设置事件监听器,处理一些最大化,最小化,关闭,调整大小等窗体事件.
窗体是一个组件容器,所有组件都必须有窗体去承载它们.JFrame是Swing技术中的窗体类,在开发应用程序时可以通过继承java.swing.JFrame类创建一个窗体,在这个窗体中添加组件,同时为组件设置事件监听器,处理一些最大化,最小化,关闭,调整大小等窗体事件.Java学习笔记之Swing(一) - 简书
Java学习笔记之Swing(一)
Java学习笔记之Swing(一)
了解Swing的基本开发过程。
掌握如何创建窗口、面板、标签和按钮。
掌握和熟练使用Swing中的事件。
Swing的第一个程序
import javax.swing.*;
public class Swing1 extends JFrame{
public Swing1 {
this.setLayout(null);//设置布局管理器
JLabel jl=new JLabel();//定义一个标签
jl.setText("第一个Swing程序"); //设置显示的文字
jl.setBounds(50,50,400,50); //设
置标签的大小和位置
this.add(jl); //将标签放到窗口中
this.setBounds(300,250,500,200); //设置窗口的大小和位置
this.setVisible(true); //设置窗口是可见的
public static void main(String args[]){
Swing1 s=new Swing1();
JFrame窗口类简介
在开发Swing程序中,通常是通过继承JFrame类来实现窗口的。在该类中具有包括定义窗口标题、标框,以及窗口的 大小和位置等众多方法。在介绍这些方法之前,先来介绍一下JFrame窗口类的构造器。JFrame窗口类具有四种构造器。
最常用的JFrame窗口类的构造器是无参构造器,使用该构造器将创建一 个初始不可见的新窗体。除此之外还有具有一个String类参数的构造器,使用该构造器能够在初始时就创建一个具有标题的新窗体。还有两种 需要给出图形配置参数的构造器,这两种构造器此处不进行介绍。
创建新窗口后,就可以通过JFrame窗口类的方法来设置新窗口。首先使 用无参构造器创建的是一个不可见的新窗体,所以要使用方法来将窗体 设置为可见的形式。在JFrame窗口类中定义了一个setVisible方法来设 置窗口的可见性,该方法具有一个布尔型参数,true表示可见,false表 示不可见。将初始状态下的窗口设置为不可见是有原因的,因为有很多 对窗口的操作需要在窗口不可见的状态下执行,从而setVisible方法通 过在程序的最后执行。
在JFrame窗口类中有个setTitle方法,该方法需要一个字符型参 数。使用setTitle方法可以设置窗口的名称;还有一个setBounds方法,该方法具有4个参数,前两个参数分别表示窗口位置的横坐标和纵坐标,后两个参数分别表示窗口大小的宽度和高度。 JFrame窗口类最重要的方法就是add方法,使用该方法可以将组 件添加到窗口中。除此之外,该类中常用的方法还有setResizable,使用该方法可是设置窗口是否允许调整大小。
JFrame类中还有一个重要的方法,即setDefaultCloseOperation.使用该方法可是设置单击关闭窗口时执行的动作。这里的动作包括四种情况:
DO_NOTHING_ON_CLOSE:不执行任何动作;
DIPOSE_ON_CLOSE:释放窗体对象;
HIDE_ON_CLOSE:
隐藏窗体;
EXIT_ON_CLOSE:
注意:如果不对该值进行设置,默认的值为HIDE_ON_CLOSE,也就是默认情况下单击关闭按钮会隐藏窗口。
JPnael类与上面的JFrame类一样,都属于一个容器类。在正式介绍该类之前我们需要先介绍一下什么是容器。
Swing中的控件可以分为三类,顶层容器、非顶层容器和普通控件。JFrame就属于一个顶层容器。顶层容器是一种可以直接显示在系统桌面的控件,其他控件必须直接或间接的借助顶层容器来显示。顶层容器除了包括JFrame类外,还包括JWindow类和JDialog类。
JPnael类属于一个非顶层容器类。非顶层容器具有两面性,非顶层容器需要放到顶层容器中使用,对于顶层容器来说,非顶层容器只是属于一般的控件。当我们在非顶层容器中添加控件时,对这些控件而言,非顶层容器就属于一个容器。
JPnael面板类简介
JPanel类是一个非顶层容器类,它具有四种构造器,最常用的依然是无参构造器,使用有参构造器可以设置面板使用什么样的布局管理器和是否使用双缓冲。JPanel面板类具有一个添加控件的add方法,使用该方法可以将普通控件添加到面板中。getHeight和getWidth方法可以返回当前面板的高度和宽度。JPanel类中还有一个重要的setToolTipText方法,该方法具有一个字符串参数,该方法的作用是当鼠标指针停在面板上时显示文本内容,字符串指定的就是所要显示的文本。
JLabel标签类
标签是Swing中最基本的控件,它是一种非交互式的控件。JLabel有六个构造器:
标签构造器
public void JLabel()
创建没有图像和标题的标签
public void JLabel(Icon image)
创建具有图像的标签
public void JLabel(Icon image,int horizontalAlignment)
创建具有图像和指定对齐方式的标签
public void JLanel(String text)
创建指定文本的标签
public void JLable(String text,int horizontalAlignment)
创建指定文本和指定对齐方式的标签
public void JLabel(String text,Icon image,int horizontalAlignment)
创建指定文本、图像和指定对齐方式的标签
创建一个标签的程序如下:
import javax.swing.*;
//继承JFrame类
public class Swing8 extends JFrame
JLabel jl=new JLabel(); //定义构造器
public Swing8()
this.setTitle("创建标签");
jl.setText("这是一个标签"); jl.setVerticalAlignment(JLabel.CENTER);//设置标签垂直居中
jl.setHorizontalAlignment(JLabel.CENTER);//设置标签水平居中
this.add(jl); //将标签添加到窗口中
this.setBounds(300,250,300,200); //设置窗口的大小和位置
this.setVisible(true); //设置窗口是可见的
public static void main(String args[]) {
Swing8 s=new Swing8();
运行结果:
JButton按钮类
JButton类也有多个构造器,最常用的依然是无参构造器。在JButton按钮类中具有几个很常用的方法。其中setText方法是 来设置按钮上显示的文本,和其对应的是用getText方法来获取按 钮上显示的文本。在JButton按钮类中还有一个经常被使用,即setMnemonic方法,使用该方法可以设置按钮的助记符。助记符就是使用键盘中的Alt加该助记符就能起到相应的功能。
创建一个简单按钮的实例如下:
import javax.swing.*;
//继承JFrame类
public class Swing9 extends JFrame
JButton jb=new JButton(); //定义构造器
public Swing9()
this.setTitle("创建按钮");
jb.setText("这是一个按钮"); //设置按钮上显示的内容
jb.setMnemonic('a'); //设置按钮的助记符
this.add(jb); //将按钮添加到窗口中
this.setBounds(300,250,300,200); //设置窗口的大小和位置
this.setVisible(true); //设置窗口是可见的
public static void main(String args[]) {
Swing9 s=new Swing9();
编译运行上面的实例代码之后,创建出一个窗口,整个窗口中只有一个按钮,而且按钮沾满了整个窗口。当我们从键盘上按下Alt+A组合键时相当于点击了这个按钮。这就是助记符的作用。
Swing中的事件
事件是一种很好的用户和界面的交互手段。在事件的发生和响应的过程中需要两个对象,事件监听器和事件源。事件源就是我们常见的一些可交互的控件,例如按钮、文本框和窗口等。但是不同的控件是存在不同的事件的,事件信息被封装在事件对象 中。事件监听器是指实现专门的监听接口的类的对象。每一个事件都有 对应的监听接口,同时在该接口中给出了处理事件的方法。在编写监听 器时需要事件监听接口,同时实现其中的方法,在方法中编写触发事件 后执行的程序。在编写程序时,还需要将监听器注册给事件源,这样才能执行事件。
同一个事件源注册多个监听器:
同一个事件源可以同时注册多个监听器,这种情况下触发事件, 所有的监听器都将执行事件方法,对事件进行处理。 当为同一个事件源注册多个监听器时,监听器的执行顺序并不是 先注册先执行的顺序,而是先注册后执行的顺序来执行的。
实例代码:
import javax.swing.*;
public class Swing5 extends JFrame{
JButton jb=new JButton();
int i=0;//按钮被单击的次数
public Swing5(){
this.setTitle("创建按钮");
jb.setText("按钮按下了0次");
jb.setMnemonic('a');
this.add(jb);
//为按钮注册监听器
jb.addActionListener(new ActionListener() {
//触发事件时执行的方法
public void actionPerformed(ActionEvent e){
Swing5.this.jb.setText("按钮按下了"+(++i)+"次");
//为按钮注册第二个监听器
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Swing5.this.jb.setText("按钮按下了"+(++i)+"次");
this.setBounds(100,200,300,250);
this.setVisible(true);
public static void main(String args[]){
Swing5 s=new Swing5();
同一个监听器注册给多个事件源
同一个监听器注册给多个事件源的情况下,所有的事件源中的任 意一个触发事件都会通知监听器,并执行监听器中的事件处理方法。将一个监听器注册给多个事件源,从而不管是单击哪一个按钮,都将执行监听器方法。为了辨别是哪一个按钮被按下,在监听器方法中需要判断是哪一个按钮触发了事件,执行的效果是使另一个按钮的显示内容发生变化。
窗体获取和失去焦点事件
窗体中的所有事件都是使用WindowEvent类来表示。窗体获取和失去焦点事件,该事件是通过实现 WindowFocusListener监听接口实现的。
窗体打开、关闭和激活事件
要实现窗体打开、关闭和激活事件只需要实现WindowListener监听接口的监听器。
按钮时具有事件的,当我们单击按钮时就出发了按钮事件,即ActionEvent事件。如果我们希望按钮事件触发后执行我们指定的程序,我们需要为按钮添加动作事件监听器,并且需要为按钮注册动作事件监听器。编写动作事件监听器需要通过实现ActionListener监听接口来完成。
在ActionListener监听接口中只有一个actionPerformed方法,所以在动作事件监听器中只需要实现这个方法。我们可以将触发事件后需要执行的程序写在actionPerformed方法中。定义完监听器后,我们还需要向按钮注册该监听器,注册监听器可以通过addActionListener方法来完成。
1、窗体1、常用属性(1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。(2)WindowState属性:用来获取或设置窗体的窗口状态。取值有三种:Normal(窗体正常显示)、Minimized(窗体以最小化形式显示)和Maximize...
DOMDOM节点DOM的概念DOM是文档对象模型(DocumentObjectModel)的简称,它的基本思想是把结构化文档(比如HTML和XML)解析成一系列的节点,再由这些节点组成一个树状结构(DOMTree)。所有的节点和最终的树状结构,都有规范的对外接口,以达到使用...
面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象。 能够做什么(方法):告诉外界对象有那些功能。 后者以前者为基础。 大的对象...
1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来用。 2.String和StringBuffer他们都可以存储和操作字符串,即包含多个字符的字符串数据。 String类是字符串常量,是不可更改的常量。而Str...
百战程序员_ Java1573题 QQ群: 掌握80%年薪20万掌握50%年薪10万 全程项目穿插, 从易到难,含17个项目视频和资料持续更新,请关注 国内最牛七星级团队马士兵、高淇等11位十年开发经验专家录制 北京尚学堂...
昨晚看得《情敌蜜月》,本来是无聊加着冲着封面上的霍建华,但是电影结束之后,我并没有被高颜值满足的饱食感,反而是喉间哽住了一般。 电影中最圆满的应该是那个亿万名媛,林默(霍建华饰)的新娘小静。一个善良,任性,有些独占欲,一意孤行要嫁给林默的美丽而独立的女孩。在一次压力山大的...
那还是在七八年前,做人力资源顾问公司时认识的一个叫大美的姑娘。她长的胖乎乎,圆圆的脸,圆圆的身体,算不上漂亮。 那一年,我们是在一起给一家企业做内训课程,我和她一起做助教,她负责拍照,做PPT。 上课期间,一个会议室那么多的人,她拍照时俨然没有任何顾忌,时而蹲下,时而趴在地...
2017年,内容创业话题还在持续发酵。阳春未过,罗辑思维罗胖、新榜徐达内等内容创业大牛多次就这个话题发表公开演讲。 回顾过去,2016年自媒体一路高歌猛进,爆发出无数传奇: papi酱获得1200万融资,并拿下一条2200万的天价广告; 母婴大号“年糕妈妈”通过内容卖货,月...
记得去年写过一篇题为《人到中年,淡看世事浮沉》的文章,用“人到中年,宛若一盏清茶,淡然独醉,悄然独醒。”这句带有禅理的话做题记,发文后几天,便有人问我,你是否看破红尘?其实,文章并没有那么消极,只是有感于生活中的琐事。那时的我正奔走在招生的路上,没有大彻大悟的深邃,灵感来了...
今天是周末。现在的周末已经和原来的周末不一样,因为有了宝宝。三个月大的小东西正是要人哄的时候,有的时候甚至俩人都哄不好。平时都是老婆一个人在带,周末当然要分担一下她的工作。带一天孩子,感觉比工作一天更累。怪不得老婆总想让我来带孩子,她去上班。如果真这样换了,我还真干不了带孩...当前位置: >>
SQL sever2005
Java语言与JBuilder应用初 步 第十三章 使用Swing组件Version 3.0襄樊软件学院你的潜力,我们的动力! 本章要点? ? ? ? ? ? ?襄樊软件学院顶级容器组件 通用容器组件 专用容器组件 基本控件 不可编辑组件 交互的格式组件 文本组件你的潜力,我们的动力! 顶级容器组件? 框架C 框架是一个图形界面程序的主窗口 C 在Java中,每个具有图形界面的程序至少要有 一个框架,小程序有时也会使用框架 C 框架是由边框、标题栏、最大化、最小化、还 原、移动、关闭按钮、系统菜单,以及内容窗 格组成 C 内容窗格是框架的核心区域,主要的图形界面 组件、菜单栏、工具栏都在内容窗格中襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 框架C 框架是一个程序的主窗口,每个具有图形界面 的程序都至少要有一个框架 C 如果程序中还有其它窗口,并且这些窗口依赖 于框架的,则应使用对话框(JDialog) C 如果要使其它窗口显示在框架的内部,则应该 使用内部框架(JInternalFrame) C 内部框架虽然和框架很象,但它不是顶级容器 组件,而是专用的容器组件襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 框架C 框架是JFrame类的对象。创建并显示一个框架 的步骤如下: C 创建一个JFrame对象,此时框架尚未显示 C 在添加了组件之后,调用pack函数排列组件 C 调用它的setVisible函数以显示框架FrameDemoFrame frame = new FrameDemoFrame(); frame.setTitle(&FrameDemo - 框架功能演示&); frame.pack(); frame.setVisible(true);襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 框架C 执行这段程序,显示的 框架如下图所示: C 用鼠标拉开窗口之后, 如右图所示: C 由于框架中尚没有组件, 因此Java自动将框架缩 到最小尺寸襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 框架C 标题用来描述程序,它显示在框架的标题栏上, 以及系统的任务栏上 C 有两种设定框架标题的方法利用setTitle函数设定标题 在构造函数中设定标题C 调用框架的setTitle函数,如下所示:frame.setTitle(&FrameDemo - 框架功能演示&);襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 框架C 在构造函数中给出标题JFrame frame = new JFrame(&FrameDemo - 框架功能演示&);C 如果从JFrame继承而得自己的框架类,那么就 需要覆盖父类的构造函数,如下所示:public class FrameDemo { public FrameDemo() { super(); } public FrameDemo(String title) { super(title); } }襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 框架C JFrame有两个构造函数,一个不带参数,一个 带有字符串变量作为标题 C 由第3章我们知道,子类FrameDemo应当同时覆 盖父类的这两个构造函数,否则就不能构造不 带参数的FrameDemo对象 C 图标是程序的代表符号。图标会显示在应用程 序窗口的左上角和系统任务栏中 C 一个标准的图标是16x16象素大小襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 框架C 利用setIconImage函数为程序设置图标String imgURL = &myicon.gif&; ImageIcon icon = new ImageIcon(imgURL); frame.setIconImage(icon.getImage());C 第一行代码用字符串存储了图片文件名 C 第二行代码创建了一个ImageIcon对象来表示图 标,该对象可支持常见的gif, jpg文件 C 第三行代码将icon对象中的图片传递给框架襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 框架C setIconImage函数的参数是一个Image变量 C Image类是一个表示所有图片的抽象类,不能直 接创建Image对象 C 因此通过这种间接的方法,先产生一个 ImageIcon对象,再调用它的getImage函数获得 Image型的返回值 C 实际中,上述三行代码可以精简为一行:frame.setIconImage(new ImageIcon(&myicon.gif&).getImage());襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 框架C 前面的程序已经自动具有了最大化、最小化、 改变大小、移动等功能 C 但关闭窗口以后,应用程序并未退出,还需要 按“Ctrl-C”才能强行退出程序 C 因为JFrame对象在缺省情况下关闭时,仅仅是 隐藏框架,而非退出整个应用程序 C 为了自动关闭程序,需要设置JFrame对象的属 性,或者添加窗口监听器襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 框架C 关闭程序的方法1:将关闭窗口操作设为退出程 序:C C C frame.setTitle(&FrameDemo - 框架功能演示&); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack();C 上例中,调用setDefaultCloseOperation函数设定关 闭框架时的操作。函数形式如下:public void JFrame.setDefaultCloseOperation(int operation);襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 框架C 参数代表关闭时的操作,可以有如下值:WindowConstants.DO_NOTHING_ON_CLOSE:不 做任何事,用窗口监听器进行关闭工作 WindowConstants.HIDE_ON_CLOSE:隐藏界面, 这是框架和对话框对象的默认操作 WindowConstants.DISPOSE_ON_CLOSE:隐藏窗 口,并且释放它使用的资源,这是内部框架对象的 默认操作 JFrame.EXIT_ON_CLOSE:退出应用程序,这种退 出方式只能用于应用程序的主框架中 襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 框架C 方法2:编写窗口监听器类,在窗口关闭事件中 关闭程序,如下面的代码所示:frame.setDefaultCloseOperation( WindowConstants.DO_NOTHING_ON_CLOSE); frame. addWindowListener(new FrameDemoFrame_WindowListener_Closing(frame));C 第一行语句将窗口关闭时的操作设为无 C 第二行语句添加了窗口监听器对象,监听关闭 程序的操作襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 框架C 两种方法实现的功能是一样的,第一种方法远 比第二种方法简单 C 但第一种方法在关闭时只能直接退出程序,而 第二种方法可以实现更多功能 C 如果在退出程序时需要用户确认,或者提示用 户保存文件,就必须采用第二种方法 C 在使用第二种方法时,必须将窗口关闭时的操 作设为无,否则程序将直接退出襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 框架C 例题:在退出程序时,要求用户确认:public void windowClosing(WindowEvent e) { int returnV returnValue = JOptionPane.showConfirmDialog(null, &确实要退出程序吗?&, &退出程序&, JOptionPane.YES_NO_OPTION); if (returnValue == JOptionPane.YES_OPTION) System.exit(0); }C 调用此函数时会自动弹出一个对话框,要求用 户确定是否退出程序襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 框架C 在框架中加入组件的方法: C 用getContentPane函数获得内容窗格 C 在内容窗格中用add函数加入各种组件JPanel contentP contentPane = frame.getContentPane(); JPanel panel1 = new JPanel(); contentPane.add(panel1); panel1.add(new JLabel(&请点击下面的按钮:&)); panel1.add(new JButton(&关闭&));襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 框架C 本例中,在内容窗格上加入了一个面板,在面 板上放置了一个文字标签和一个按钮 C 显示的效果如图:襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 框架C 主程序框架一般还有菜单栏。主程序中的菜单 栏通过setJMenuBar函数来设定: C JMenuBar menuBar = new JMenuBar(); C frame.setJMenuBar(menuBar); C JMenuBar是菜单对象,实际中还需要在其中加 入菜单项和菜单子项 C 关于菜单,后面还会有详细介绍襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 框架C 对于前面的例子,增加两个菜单项:“文件” 和“帮助”,源代码见教材,增加菜单以后的 主程序界面如下:襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 框架C 调整主程序界面的大小:调用pack函数进行自动调整 调用setSize函数指定界面的大小 调用setLocation函数指定界面的位置C pack函数:根据面板、子面板的布局,根据控 件的大小自动调整窗口 C pack函数的调整过程涉及到布局管理器的原理, 下一章会详细介绍襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 框架C setSize函数,指定界面的宽度和高度:public void setSize(int width, int height); Dimension d = new Dimension(int width, int height); public void setSize(Dimension d);C 宽度和高度的单位都是象素 C setSize函数的第一种形式直接给出宽度和高度 的数值 C 第二种形式需要创建一个Dimension对象,再通 过这个对象给出宽度和高度襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 框架C setLocation函数的作用是指定界面的位置:public void setLocation(int x, int y); Point p = new Point(int x, int y); public void setLocation(p);C x, y分别表示主程序框架的左上角在视窗中的位 置,单位是象素 C setLocation的第一种用法是直接给出x,y的值 C 第二种用法是创建一个Point对象,通过这个对 象给出x,y的值襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 框架C 可以通过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);C setBounds函数的参数包括框架的大小、框架的 位置,调用此函数之后程序就在指定位置显示 指定大小的图形界面襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 框架C setLocationRelativeTo函数,它的作用是将框架放 到屏幕上一个现有的组件旁边:public void setLocationRelativeTo(Component c);C 其中c是一个已经在屏幕上显示的组件 C 此函数将框架放到组件c的旁边,放置原则是让 放置的框架尽量靠近屏幕中间 C 如果函数参数为null,那么就将框架居中放置, 这是常用的一种将窗口居中放置的方法襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 对话框C 对话框是另一类常用的顶级容器 C 对话框与框架非常相似,复杂的对话框也能够 实现框架的几乎所有功能 C 实际中,常用的是界面简单、功能高度特化的 对话框消息框:显示一条消息 选择框:让用户进行选择 文件选择框:选择文件进行打开、保存等操作 颜色选择框:从调色板中选择颜色 襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 对话框C 每个对话框都必须依附于框架框架关闭以后,所有依附它的对话框也会关闭 当框架最小化成一个图标的时候,所有依附它的对话 框也会自动隐藏 当框架还原的时候,对话框又会自动显示 这些操作由Swing自动实现C 本小节主要介绍通用的对话框(JDialog)和消 息框(JOptionPane)襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C 例:在主框架程序中添加一个通用对话框,里 面有一个文字标签和一个按钮: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); }襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C 在主程序中调用这个函数,会弹出对话框,如 下图所示:襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C 对话框分为有模式的和无模式的两种类型 C 有模式的对话框在显示时,将屏蔽用户向对话 框所属的主框架键入的所有内容,用户不能对 主框架进行任何操作 C 无模式对话框在显示时,用户仍然可以用鼠标 点击主框架,在主框架里输入内容,或移动主 框架 C 缺省的JDialog对话框都是无模式对话框襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 对话框C 如果要创建有模式对话框,可以在构造函数里 增加一项如下:JDialog dialog = new JDialog(this, &对话框&, true);C 也可以用setModal函数来设置对话框是有模式的 还是无模式的:dialog.setModal(true); // 将对话框设置成有模式的 dialog.setModal(false); // 将对话框设置成无模式的C 第一行代码将对话框设置成有模式的,第二行 将对话框设置成无模式的襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 对话框C 消息框(JOptionPane)是一种非常简洁、专用 的对话框。 C 例:弹出一个提示消息框:JOptionPane.showMessageDialog(frame, &修改已经保存到文件中。&);C 弹出的消息框如下图所示:襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C 使用JOptionPane生成一个对话框时,先自动产 生一个JDialog对话框,然后再将消息框的内容 加到对话框的内容窗格里 C 消息框所创建的对话框都是有模式对话框 C 消息框中可以放置图标、标题和文字,设定按 钮文字等 C 甚至可以定制消息框中显示的组件,并指定消 息框在屏幕上显示的位置襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 对话框C 消息框中的图标:预设的图标有4种:错误图标、消息图标、警告图标和 提问图标 可以显示自己定制的图标C 不同界面风格下的图标风格:Windows风格襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C 不同界面风格下的图标风格(续):Java风格 CDE/Motif风格 GTK+风格襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C C C C C 常用消息框的调用: 消息框:利用静态函数showMessageDialog显示 确认框:利用静态函数showConfirmDialog显示 选择框:利用静态函数showOptionDialog显示 输入框:利用静态函数showInputDialog显示襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C showMessageDialog(显示消息框): C 消息框是最简单的一种对话框,它的作用只是 显示一条消息,它只有一个“确认”按钮,用 以关闭消息框。 C 通过修改showMessageDialog函数的参数,可以修 改消息框显示的消息、图标和消息框的标题, 下面列出常用的消息框形式襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框// 缺省标题和图标 JOptionPane.showMessageDialog(frame, &修改已经保存到文件中。&);// 自定义标题,错误图标 JOptionPane.showMessageDialog(frame, &修改已经保存到文件中。&, &保存文件&, JOptionPane.ERROR_MESSAGE);襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框// 自定义标题,信息图标 JOptionPane.showMessageDialog(frame, &修改已经保存到文件中。&, &保存文件&, RMATION_MESSAGE); // 自定义标题,警告图标 JOptionPane.showMessageDialog(frame, &修改已经保存到文件中。&, &保存文件&, JOptionPane.WARNING_MESSAGE);襄樊软件学院你的潜力,我们的动力! 顶级容器组件// 自定义标题,疑问图标 JOptionPane.showMessageDialog(frame, &修改已经保存到文件中。&, &保存文件&, JOptionPane.QUESTION_MESSAGE); // 自定义标题,无图标 JOptionPane.showMessageDialog(frame, &修改已经保存到文件中。&, &保存文件&, JOptionPane.PLAIN_MESSAGE); // 自定义标题,自定义图标 JOptionPane.showMessageDialog(frame, &修改已经保存到文件中。&, &保存文件&, RMATION_MESSAGE, new ImageIcon(&mainbtn.jpg&));襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C 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)襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C showMessageDialog函数的参数说明如下: C Component parentComponent:消息框的父组件, 一般都是框架对象; C Object message:在消息框中显示的内容,理论 上说,任何组件、任何对象都可以放在参数里, 但一般显示的都是字符串; C String title:对话框的标题栏显示的标题,这项可 以没有,此时用缺省标题。襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 对话框C int messageType:消息框类型,有下列值:消息框类型的值 JOptionPane.ERROR_MESSAGE 分类 错误消息 图标RMATION_MESSAGE普通消息JOptionPane.WARNING_MESSAGE警告消息JOptionPane.QUESTION_MESSAGE疑问消息JOptionPane.PLAIN_MESSAGE无格式消息(无)襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C showConfirmDialog(显示确认框): C 显示一个对话框,让用户选择“是”或“否”, 用户选择的结果在返回值中给出:int choice = JOptionPane.showConfirmDialog(frame, &你是否真的要删除文件? &);C 执行程序,在屏幕上显示的确认框如下:襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C 点击“是”,“否”,“撤销”都会关闭确认 框,同时返回一个值:“是”对应的返回值是JOptionPane.YES_OPTION “否”对应的返回值是JOptionPane.NO_OPTION “撤销”的返回值JOptionPane.CANCEL_OPTIONC 可以通过用条件语句比较返回值来确认用户点 击的是哪个按钮,再进行下一步操作。 C showConfirmDialog是一个静态成员函数,可直接 通过类来调用襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 对话框C 确认框的调用形式有4种:static int JOptionPane.showConfirmDialog(Component parentComponent, Object message) static int JOptionPane.showConfirmDialog(Component parentComponent, Object message, String title, int optionType) static int JOptionPane.showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType) static int JOptionPane.showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon)襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C showConfirmDialog函数最多可以有6个参数 C Component parentComponent, Object message, String title, int messageType, Icon icon的作用与前面介绍 的消息框一致 C optionType参数选择确认框的形式:值为JOptionPane.YES_NO_OPTION时,确认框显示 “是”和“否”两个按钮; 值为JOptionPane.YES_NO_CANCEL_OPTION,显 示“是”,“否”和“撤销”三个按钮 襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 对话框界面 代码 int choice = JOptionPane.showConfirmDialog(frame, &你是否真的要删除文件?&, &删除文件&, JOptionPane.YES_NO_OPTION); int choice = JOptionPane.showConfirmDialog(frame, &你是否真的要删除文件?&, &删除文件&, JOptionPane.YES_NO_CANCEL_OPTION);襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C showOptionDialog(显示选择框): C 用于显示定制的对话框,它是参数最多、使用 最灵活的JOptionPane类对话框 C 可以在对话框上显示多个按钮 C 每个按钮的文字可以自己定制 C 对话框中还包括图标、提示字符串 C 甚至可以在对话框中加入组件襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C 例:一个定制的对话框:String[] options = {&小说&, &诗歌&, &不告诉你&}; int choice = JOptionPane.showOptionDialog(frame, &如果将你放逐到荒岛, 你最希望带本什么书?&, &问卷调查&, JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, new ImageIcon(&about.png&), options, options[2]);襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C showOptionDialog函数有8个参数:Component parentComponent:对话框的父组件,一 般是主程序框架; Object message:对话框的提示语句,一般是字符串; String title:对话框的标题栏中显示的标题; int optionType:对话框中的按钮数量: YES_NO_OPTION,在屏幕上显示“是”,“否” 两个按钮;YES_NO_CANCEL_OPTION,在屏幕 上显示“是”,“否”,“撤销”三个按钮;襄樊软件学院你的潜力,我们的动力! 顶级容器组件int messageType:图标类型,有5种情况: ERROR_MESSAGE, 显示出错图标; INFORMATION_MESSAGE, 显示消息图标; WARNING_MESSAGE, 显示警告图标; QUESTION_MESSAGE, 显示提问图标; PLAIN_MESSAGE,不显示任何图标; Icon icon:自定义图标,如果采用上面给出的默认图 标,那么设置此项的值为null; Object[] options:字符串数组,用于显示按钮上的文 字; Object initialValue:对话框的缺省选择,如果此项的 值为null,则不指定默认选择。 襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 对话框C 函数的返回值表示用户所点击的按钮:YES_OPTION表示用户点击“是”按钮; NO_OPTION表示用户点击“否”按钮; CANCEL_OPTION表示用户点击“撤销”按钮; OK_OPTION表示用户点击“确定”按钮,只有消息 框里才有“确定”按钮; CLOSED_OPTION,表示用户没有点击任何按钮,而 是直接关闭对话框。襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C 虽然选择框可以定制按钮文字,但按钮类型是 固定的,只有“是-否”和“是-否-取消” C 用户点击按钮时,返回的值是该按钮缺省对应 的值。对于上面的例子:点击“小说”时,实际返回的是YES_OPTION; 点击“诗歌”时,实际返回的是NO_OPTION; 点击“不告诉你”,实际返回CANCEL_OPTIONC 选择框同样可以定制提示语句和图标,定制的 方法与消息框相同襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 对话框C showInputDialog(显示输入框): C 该函数弹出一个对话框,提示用户输入一行文 字,或者从下拉框中选择一项 C 输入框有很多用法,常用的有:输入一行文字 带有缺省值的文本输入 从下拉框中选择一项内容襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C 例,用于输入文字的对话框:String rtnStr = JOptionPane. showInputDialog(frame, &如果将你放逐到荒岛, 你最希望带本什么书?&);C 输入文字,然后回车或单击“确认”,输入的 文字会保存在rtnStr所指向的字符串里 C 如果按了“Esc”键,或单击“撤销”,那么键 入的文字不会保存,rtnStr的值为空襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 对话框C 可以在输入框中给出输入文字的默认值:String rtnStr = JOptionPane.showInputDialog(frame, &如果将你放逐到荒岛,你最希望带本什么书?&, &小说&);C 这条语句在屏幕上显示的对话框如下:襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C 也可以定制对话框的标题和图标类型:String rtnStr = JOptionPane.showInputDialog(frame, &如果将你放逐到荒岛,你最希望带本什么书?&, &问卷调查&, JOptionPane. WARNING_MESSAGE);C 在屏幕上显示的对话框如下,注意此时不能设 定输入的默认字符串。襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C 可以用下拉框的形式选择内容:String[] inputOptions = {&小说&, &诗歌&, &不告诉你&}; Object rtnStr = JOptionPane.showInputDialog(this, &如果将你放逐到荒岛,你 最希望带本什么书?&, &问卷调查&, JOptionPane. QUESTION_MESSAGE, null, inputOptions, &诗歌&);C 对应对话框如下图所示,缺省值是第二项:襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C 输入框的完整形式如下所示:public static Object JOptionPane.showInputDialog( Component parentComponent, Object message, String title, int messageType, Icon icon, Object[] selectionValues, Object initialSelectionValue)C 其中parentComponent是输入框的父组件; message是提示语句;title是输入框的标题; messageType是预设的图标类型;icon是自定义的 图标文件;襄樊软件学院 你的潜力,我们的动力! 顶级容器组件? 对话框C selectionValues参数项代表预先设置的选项,一 般是字符串数组。如果给出这项参数,则对话 框框变成下拉框的形式;如果此项为null,对话 框是输入框的形式 C initialSelectionValue参数项代表缺省值。对于定制 的文本框,可以在此项中显示缺省值;对于下 拉框,会自动选择显示与缺省值相同的项襄樊软件学院你的潜力,我们的动力! 顶级容器组件? 对话框C 例:带缺省值的定制文本框:Object rtnStr = JOptionPane.showInputDialog(this, &如果将你放逐到荒岛,你最希望带本什么书?&, &问卷调查&, JOptionPane.QUESTION_MESSAGE, null, null, &诗歌&);襄樊软件学院你的潜力,我们的动力! 通用容器组件? 面板C 面板是最常用的容器组件。缺省情况下,面板 上除了背景色以外没有任何东西 C 可以用多个面板,配合不同的布局管理器来配 置控件在界面上的布局襄樊软件学院你的潜力,我们的动力! 通用容器组件? 面板C 该界面用了7个面板,为了说明这7个面板的位 置和作用,我们为面板配置不同颜色:襄樊软件学院你的潜力,我们的动力! 通用容器组件? 面板C 最顶层的面板就是内容窗格,在图中是外围的 红色背景部分 C 它使用自上而下排列的盒式布局管理器来排列 其中的两个组件 C 在面板的四周是5个象素宽的空白边框,将组件 与界面边框分开 C 在两个组件之间是一段5个象素宽的透明窄条, 将两个组件隔开襄樊软件学院 你的潜力,我们的动力! 通用容器组件? 面板C 内容窗格的源代码如下:JPanel mainPane = new JPanel(); mainPane.setLayout(new BoxLayout(mainPane, BoxLayout.PAGE_AXIS)); mainPane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); mainPane.add(Box.createRigidArea(new Dimension(0, 5))); mainPane.add(metricPanel); mainPane.add(Box.createRigidArea(new Dimension(0, 5))); mainPane.add(usaPanel); frame.setContentPane(mainPane);襄樊软件学院你的潜力,我们的动力! 通用容器组件? 面板C 内容窗格之内,是两个带有标题的面板,在 图中是两块非常显眼的青色部分 C 它的作用是通过标题提示面板的功能,同时 排列其中的组件 C 每个面板内有一个文本框、滑块和下拉框 C 为了便于排列,它们并不是直接放到面板里 的,而是分别放到左右两个小面板里 C 标题面板里只需要简单地左右排列两个小面 板就可以了 襄樊软件学院 你的潜力,我们的动力! 通用容器组件? 面板C 标题面板的源代码如下:JPanel metricPanel = new JPanel(); metricPanel.setBorder(BorderFactory.createCompoundBorder( BorderFactory.createTitledBorder(&Metric System&), BorderFactory.createEmptyBorder(5,5,5,5))); metricPanel.setLayout(new BoxLayout(metricPanel, BoxLayout.LINE_AXIS)); metricPanel.add(metricUnitGroup); metricPanel.add(metricChooserPanel);襄樊软件学院你的潜力,我们的动力! 通用容器组件? 面板C 标题面板中的左边小面板里(图中蓝色竖条), 纵向摆放着文本框和滑块:JPanel metricUnitGroup = new JPanel(); metricUnitGroup.setLayout(new BoxLayout(metricUnitGroup, BoxLayout.PAGE_AXIS)); metricUnitGroup.setBorder(BorderFactory.createEmptyBorder(0,0,0,5)); metricUnitGroup.add(textField); metricUnitGroup.add(slider); metricUnitGroup.setAlignmentY(TOP_ALIGNMENT);襄樊软件学院你的潜力,我们的动力! 通用容器组件? 面板C 标题面板中的右侧小面板里(图中下拉框下面 的粉红色横条),摆放着下拉框,在下拉框下 面还有一个空白组件,用来填充空间:JPanel metricChooserPanel = new JPanel(); metricChooserPanel.setLayout(new BoxLayout(metricChooserPanel, BoxLayout.PAGE_AXIS)); metricChooserPanel.add(unitChooser); metricChooserPanel.add(Box.createHorizontalStrut(100)); metricChooserPanel.setAlignmentY(TOP_ALIGNMENT);襄樊软件学院你的潜力,我们的动力! 通用容器组件? 面板C 表面看来,这样小的程序界面用了7个面板是过 于复杂了 C 但界面设计时应考虑不同分辨率、不同窗口大 小时的效果 C 此外,不同的操作系统、不同的语言环境下, 字体的大小、边框的设置是不一样的 C 为了在不同条件下都能合理布局界面,使用面 板是非常必要的襄樊软件学院 你的潜力,我们的动力! 通用容器组件? 面板C 在布局过程中,面板应当与合适的布局管理器 搭配使用 C 面板默认搭配的布局管理器是FlowLayout,它简 单地将面板中的组件排成一排 C 调用setLayout函数可搭配新的布局管理器:JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));襄樊软件学院你的潜力,我们的动力! 通用容器组件? 面板C 一些布局管理器,如BorderLayout,构造函数不 需要任何参数 C 其它布局管理器,如BoxLayout,在构造函数中 需要给出面板对象,并且指定布局类型 C 有关各类布局管理器的布局方法,下一章会作 详细介绍襄樊软件学院你的潜力,我们的动力! 通用容器组件? 面板C 调用add函数可以在面板中添加组件 C 对于大部分布局管理器,添加组件时不需要给 出附加参数:panel.add(myLabel); panel.add(myButton);C 对于BorderLayout布局管理器,在添加组件时还 需要给出组件的相对位置,如:panel.add(myLabel, BorderLayout.PAGE_START); panel.add(myButton, BorderLayout.CENTER);襄樊软件学院你的潜力,我们的动力! 通用容器组件? 滚动条面板C 滚动条面板可以在屏幕上有限的区域内显示更 大范围的内容,例如:襄樊软件学院你的潜力,我们的动力! 通用容器组件? 滚动条面板C 相应的代码如下:JScrollPane scrollPane = new JScrollPane(textArea1, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); scrollPane.setPreferredSize(new Dimension(250, 250));C 创建滚动条面板的过程分两步:第一步,创建一个JScrollPane对象,在构造函数中需 要给出放在面板里的控件 第二步,设置面板的初始大小襄樊软件学院你的潜力,我们的动力! 通用容器组件? 滚动条面板C C C C C 滚动条面板的构造函数有三个参数: 第一个参数是放在滚动条面板里的组件 第二个参数设置竖滚条的状态 第三个参数设置横滚条的状态 竖滚条和横滚条都有三种状态:always:不管是否需要,滚动条都会出现 as needed:只有需要滚动条时才出现 never:不管是否需要,滚动条都不出现 襄樊软件学院 你的潜力,我们的动力! 通用容器组件? 滚动条面板C 滚动条的状态通过6个常量来表示:常量名称 JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED JScrollPane.VERTICAL_SCROLLBAR_NEVER JScrollPane.VERTICAL_SCROLLBAR_ALWAYS JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED JScrollPane.HORIZONTAL_SCROLLBAR_NEVER JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS含义 竖滚条,需要时出现 竖滚条,从不出现 竖滚条,总是出现 横滚条,需要时出现 横滚条,从不出现 横滚条,总是出现襄樊软件学院你的潜力,我们的动力! 通用容器组件? 滚动条面板C 第二行代码设置滚动条面板的初始大小 C 初始大小由一个Dimension对象表示,该对象的 构造函数的参数分别代表宽度和高度 C 滚动条面板的应用很广,列表框和文本区域都 需要滚动条面板的支持 C 滚动条面板的基本应用较为简单,它还可以进 行更多更复杂的设置,这部分内容可参考Java 的帮助文件襄樊软件学院 你的潜力,我们的动力! 通用容器组件? 分隔条面板C 分隔条面板将一个面板分为两部分,两部分之 间被一个分隔条隔开,用户可以拖动分隔条来 改变左右面板的大小,如下图所示:襄樊软件学院你的潜力,我们的动力! 通用容器组件? 分隔条面板C 分隔条面板由JSplitPane对象实现 C 左右两部分分别是两个子面板,子面板一般是 滚动条面板 C 下面的代码用来创建分隔条面板:JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, scrolll, scroll2); split.setDividerSize(8); split.setOneTouchExpandable(true); getContentPane().add(split, BorderLayout.CENTER);襄樊软件学院你的潜力,我们的动力! 通用容器组件? 分隔条面板C 第一行代码是分隔条面板的构造函数,该构造 函数有三个参数:第一个参数指示分隔条左右排列或上下排列 第二个参数表示左侧子面板 第三个参数表示右侧子面板C 第二行代码设置分隔条的宽度,这里设置分隔 条宽度为8个象素 C 第三行代码设置是否能够单击分隔条将左侧或 右侧子面板展开襄樊软件学院 你的潜力,我们的动力! 通用容器组件? 分隔条面板C 用户可以用鼠标左右拖动分隔条,来改变两个 子面板的大小 C 分隔条上部的两个小三角形,它们分别用来完 全展开一侧子面板,同时压缩另一侧襄樊软件学院你的潜力,我们的动力! 通用容器组件? 标签页面板C 标签页面板是一种特殊的面板 C 在标签页面板中,几个不同的子面板共享同一 处空间 C 每个子面板上面有一个小小的标签,当用户点 击标签时,对应的子面板就会显示出来 C 下图显示的是一个有两个子面板的标签页面板, 每个子面板中显示不同的内容:襄樊软件学院你的潜力,我们的动力! 通用容器组件? 标签页面板襄樊软件学院你的潜力,我们的动力! 通用容器组件? 标签页面板C 创建标签页面板的程序代码如下:JTabbedPane tabbed = new JTabbedPane(); tabbed.addTab(&第一页&, null, scrolll, &这是第一页内容&); tabbed.addTab(&第二页&, null, scroll2, &这是第二页内容&);C 第一步:创建一个JTabbedPane对象,使用缺省 的构造函数即可 C 第二步:调用addTab函数将子面板一个个加到 标签页中襄樊软件学院你的潜力,我们的动力! 通用容器组件? 标签页面板C addTab函数带有四个参数:参数1:标签页的名称,这个名称将显示在面板顶部的 小小标签上; 参数2:标签上显示的图标对象。如果没有图标,则设 为null即可; 参数3:需要显示的子面板对象; 参数4:标签页的提示文字,当用户将鼠标在标签上停 留几秒钟后,提示文字就会出现,如下图所示:襄樊软件学院你的潜力,我们的动力! 通用容器组件? 标签页面板襄樊软件学院你的潜力,我们的动力! 通用容器组件? 工具栏C 工具栏是图形界面程序常用的组件,它将一组 按钮排成一行,放在程序的顶端 C 工具栏一般作为菜单栏的补充,为菜单栏中常 用的命令提供一种快捷的执行方法襄樊软件学院你的潜力,我们的动力! 通用容器组件? 工具栏C 工具栏通过JToolBar对象来实现:JToolBar toolBar = new JToolBar(); toolBar.add(button1); toolBar.add(button2); frame.getContentPane().add(toolBar, BorderLayout.PAGE_START);C 代码的第一行创建一个JToolBar对象,使用缺省 的构造函数 C 第二、三行在工具栏中添加按钮 C 第四行将工具栏添加到内容窗格中襄樊软件学院 你的潜力,我们的动力! 专用容器组件? 工具栏C 工具栏中还可以设置分隔条,分隔条将按钮分 隔开,以达到分组的目的: C 分隔条通过addSeparator函数来添加,效果如下 图所示:toolBar.add(button2); toolBar.addSeparator(); toolBar.add(button3);襄樊软件学院你的潜力,我们的动力! 专用容器组件? 工具栏C 工具栏可以灵活拖动,只需要用鼠标拖动左侧 的竖状凸条,就可以将工具栏拖动到上、下、 左、右位置,也可以浮动在框架之上 C 灵活拖动的前提是:内容窗格必须用缺省的边界型布局管理器 内容窗格里只有一个面板和一个菜单栏 面板放在内容窗格的中心(CENTER),菜单栏放在 内容窗格的周边(EAST, SOUTH, WEST, NORTH)襄樊软件学院你的潜力,我们的动力! 专用容器组件? 工具栏襄樊软件学院你的潜力,我们的动力! 专用容器组件? 内部框架C 内部框架常用于多文档界面,它的特点是在主 框架的内部还有一系列子框架:襄樊软件学院你的潜力,我们的动力! 专用容器组件? 内部框架C 创建内部框架的基本步骤如下: C (1) 创建内部框架对象JInternalFrame subFrame1 = new JInternalFrame( &文档1&, true, true, true, true);C 内部框架对象的构造函数有5个参数:参数1:显示在子框架标题栏上的名称; 参数2:设定子框架能否改变大小; 参数3:设定子框架能否关闭; 参数4:设定子框架能否最大化; 襄樊软件学院 你的潜力,我们的动力! 专用容器组件? 内部框架参数5:设定子框架能否缩成一个图标。需要注意的是, 子框架缩成的图标是在主框架的左下角,而不会在 操作系统的任务栏出现:襄樊软件学院你的潜力,我们的动力! 专用容器组件? 内部框架C (2) 设置子框架对象的属性 C 子框架的属性包括子框架大小、位置,显示子 框架,将子框架设置成选中状态,如下面的代 码所示:subFrame1.setSize(300, 300); subFrame1.setLocation(30, 30); subFrame1.setVisible(true); try { subFrame1.setSelected(true); } catch (java.beans.PropertyVetoException e) {}襄樊软件学院你的潜力,我们的动力! 专用容器组件? 内部框架C (3) 将子框架放在桌面面板上 C 子框架不能放在普通的面板上,必须放到桌面 面板(JDesktopPane)上 C 将桌面面板作为主框架的内容窗格,再将子框 架放到桌面面板上,如下面的代码所示:JDesktopPane desktop = new JDesktopPane(); desktop.setBackground(new Color(160, 160, 160)); desktop.add(subFrame1); setContentPane(desktop);襄樊软件学院你的潜力,我们的动力! 专用容器组件? 内部框架C 通过这三步以后,内部框架界面就建立了 C 内部框架不是真正的顶级容器框架 C 但它也有自己的内容窗格,可以在其中放置各 种面板和控件 C 内部框架常用于多文档界面,例如同时打开多 个文本文件或多个图片的情况襄樊软件学院你的潜力,我们的动力! 专用容器组件? 分层窗格C 分层窗格是一个可以有多层的容器,作用是让 相互重叠的组件可以按照它们重叠的次序显示, 上层的组件覆盖在下层组件之上? 根窗格C 根窗格直属于顶级的框架或对话框,包含了内 容窗格和菜单栏,以及分层窗格、玻璃窗格等 不可见的功能窗格,它的作用是管理所有这些 窗格襄樊软件学院 你的潜力,我们的动力! 基本控件? 基本控件C 基本控件包括:按钮,单选框、复选框 下拉框 列表框 菜单 文本框C 它们是组成图形用户界面的原子控件,它们的 作用主要是从用户那里得到输入,同时也显示 一些简单的状态。襄樊软件学院 你的潜力,我们的动力! 基本控件? 按钮C Swing中的按钮有三种类型:普通按钮(JButton) 单选框(JRadioButton) 复选框(JCheckBox)C 这三类按钮都从AbstractButton(抽象按钮)类继 承而来 C 它们的外形、功能各不相同,下面分别介绍这 三类按钮襄樊软件学院 你的潜力,我们的动力! 基本控件? 普通按钮C Swing里的按钮设置十分灵活,即可以显示文字, 也可以显示图片,或者同时显示文字和图片 C 下面的例子是一个简单的按钮演示程序,其中 有3个按钮,程序界面如下:襄樊软件学院你的潜力,我们的动力! 基本控件? 普通按钮C 与按钮有关的代码如下: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);C 第1、3个按钮是文字与图片混合显示按钮,第2 个按钮是文字按钮襄樊软件学院 你的潜力,我们的动力! 基本控件? 普通按钮C JButton的构造函数有5种:JButton(); JButton(Action a); JButton(Icon icon); JButton(String text); JButton(String text, Icon icon);C 对应于空白按钮,与动作关联的按钮,只显示 图标的按钮,只显示文字的按钮,同时显示文 字和图标的按钮襄樊软件学院 你的潜力,我们的动力! 基本控件? 普通按钮C 在调用缺省构造函数创建按钮之后,可以调用 setText和setIcon函数为按钮设置显示文字和图标, 函数形式如下:JButton.setText(String text); JButton.setIcon(Icon defaultIcon);C 在setText函数中,text为按钮上显示的文字 C 在setIcon函数中,defaultIcon表示按钮上显示的图 标襄樊软件学院你的潜力,我们的动力! 基本控件? 普通按钮C 按钮的功能是当用户点击时,完成一项工作。 因此需要给按钮设置动作监听器:b1.addActionListener(new Buttonb1ActionListenerClass(this)); class Buttonb1ActionListenerClass implements ActionListener { ButtonD public Buttonb1ActionListenerClass(ButtonDemo frame) { this. frame = } public void actionPerformed(ActionEvent e) { frame.Buttonb1ActionPerformed(e); } }襄樊软件学院你的潜力,我们的动力! 基本控件? 普通按钮C 当用户点击按钮时,与按钮相关联的动作监听 器对象就接收到这个事件,并且调用对象的 actionPerformed函数 C 监听器对象的actionPerformed函数中只有一条语 句,就是调用主框架对象的对应函数 C 这是因为事件处理工作属于主框架,在事件处 理中需要访问主框架类的成员和组件襄樊软件学院你的潜力,我们的动力! 基本控件? 普通按钮C 按钮有两个常用的属性:可用性(enable) 缺省按钮(default button)C 按钮的可用性通过setEnabled函数来设置,这个 函数只有一个参数:如果参数值为真,则按钮可用 如果参数值为假,则按钮变成灰色,不可用C isEnabled函数判断一个函数是否可用襄樊软件学院 你的潜力,我们的动力! 基本控件? 普通按钮C 例题:将按钮1设成可用:if (!button1.isEnabled()) button1.setEnabled(true);C 下图展示了可用和不可用的按钮外形:襄樊软件学院你的潜力,我们的动力! 基本控件? 普通按钮C 另外一个常用的属性是缺省按钮。 C 缺省按钮不是按钮的属性,而是框架的根窗格 的属性 C 当用户输入完资料,按回车时,程序会自动调 缺省按钮的事件处理函数 C 对于输入信息的对话框,特别是登录对话框, 缺省按钮非常有用,可以有效地加快用户输入 的速度襄樊软件学院 你的潜力,我们的动力! 基本控件? 普通按钮C 用setDefaultButton函数来设置缺省按钮,用 getDefaultButton函数获得缺省按钮 C 下面的例子演示了如何设置缺省按钮:frame.getRootPane().setDefaultButton(button1);C 缺省按钮在按钮的边缘会有一条间隙:襄樊软件学院你的潜力,我们的动力! 基本控件? 单选框C 单选框(JRadioButton)在图形界面上显示为若 干小圆点 C 单选框的作用是在几个选项中选一项,且只能 选一项。如下面的例子:襄樊软件学院你的潜力,我们的动力! 基本控件? 单选框C 产生单选框的步骤: C (1) 建立单选框对象JRadioButton radio1 = new JRadioButton(&鱼&); JRadioButton radio2 = new JRadioButton(&熊掌&, true);C 单选框对象的构造函数与按钮的构造函数基本 相同,在构造函数中可以给出文字、图标、或 文字加图标。 C 第二行语句的构造函数多了一个逻辑型参数, 它的作用是指定默认选择项襄樊软件学院 你的潜力,我们的动力! 基本控件? 单选框C 默认选择项就是界面显示时初始选中的单选项, 如果不给出默认项,则显示的界面如下图所示:C 一般在程序刚开始运行时,应该给出一个默认 选中的项襄樊软件学院你的潜力,我们的动力! 基本控件? 单选框C (2) 将相关的单选框分到一组中 C 建立单选框对象以后,并不代表这些单选框之 间就已经具有相互排斥的关系了。 C 对于前面建立的两个单选框,如果你试着点击 一下,就会发现两个单选框都可以选中:襄樊软件学院你的潜力,我们的动力! 基本控件? 单选框C 只有分为一组的单选框才有单选的关系 C 将单选框分组的代码如下:ButtonGroup group = new ButtonGroup(); group.add(radio1); group.add(radio2);C 首先,建立一个ButtonGroup对象 C 再把单选框都加到此对象即可 C 如果一个窗口中有几组单选框,利用分组就可 以清晰地区分它们之间的关系襄樊软件学院 你的潜力,我们的动力! 基本控件? 单选框C (3) 将单选框放到面板中panel.add(radio1); panel.add(radio2);C 单选框一般是排成一行或一列 C 对于按行排列的单选框,面板用缺省的流式布 局(FlowLayout)即可 C 对于按列排列的单选框,面板需要用盒式布局 (BoxLayout)或表格式布局(GridLayout)襄樊软件学院你的潜力,我们的动力! 基本控件? 单选框C 单选框也属于按钮的一类,因此它也可以添加 ActionListener监听器 C 当用户点击一个单选框时,会自动调用它所对 应的监听器,去完成相应的操作 C 更常见的情况是,用户点击单选框时不需要执 行什么操作,只是选中一项 C 在最后用户点击“确定”按钮时,再查询单选 框的状态襄樊软件学院 你的潜力,我们的动力! 基本控件? 单选框C 对于这种情况,就不需要给单选框添加监听器 了,如下面的代码:if (radio1.isSelected()) System.out.println(&你选择了鱼。&); if (radio2.isSelected()) System.out.println(&你选择了熊掌。&);C 在“确定”按钮的事件处理函数中,调用单选 框的isSelected函数查询它是否被选中襄樊软件学院你的潜力,我们的动力! 基本控件? 复选框C 复选框(JCheckBox)与单选框的作用相似,也 是选择一些选项,不同的是这些选项之间没有 相互排斥的关系 C 复选框的外形是方形小框 ,如果你选中了一 个复选框,小框中会出现一个对勾 。襄樊软件学院你的潜力,我们的动力! 基本控件? 复选框C 创建复选框的代码如下:JCheckBox check1 = new JCheckBox(&音乐&); JCheckBox check2 = new JCheckBox(&文学&); JCheckBox check3 = new JCheckBox(&体育&, true); JCheckBox check4 = new JCheckBox(&电视&); JCheckBox check5 = new JCheckBox(&旅游&, true);C 复选框的创建分两步:创建一个复选框控件对象 将复选框控件放到面板上襄樊软件学院你的潜力,我们的动力! 基本控件? 复选框C 常用的复选框对象构造函数有两种 C 第一种构造函数只有一个参数,就是复选框右 侧显示的文字 C 第二种构造函数有两个参数,第二个参数是一 个逻辑型变量:参数的值为真,表示缺省选中该复选框 参数的值为假,表示缺省不选中该复选框C 与单选框不同,复选框之间没有互斥的关系, 因此不需要分组襄樊软件学院 你的潜力,我们的动力! 基本控件? 复选框C 与单选框类似,复选框也属于按钮的一类,因 此它也可以添加ActionListener监听器 C 当用户点击一个复选框时,会自动调用它所对 应的监听器,去完成相应的操作 C 更常见的情况是,用户点击复选框时不需要执 行什么操作,只是选中它 C 在最后用户点击“确定”按钮时,再逐一查询 每个复选框的状态。在这种情况下,就不需要 给复选框添加监听器了襄樊软件学院 你的潜力,我们的动力! 基本控件? 复选框C 在函数中,调用复选框的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(&旅游 &);襄樊软件学院你的潜力,我们的动力! 基本控件? 复选框C 如果你选中了第一项、第二项、第四项:C 那么点击“确定”按钮时,显示的结果是:你的兴趣爱好有:音乐 文学 电视襄樊软件学院你的潜力,我们的动力! 基本控件? 下拉框C 下拉框又叫组合框(JComboBox),是一种多个 选项中选择一个的组件 C 从功能上看,它和前面的单选框很像,但是下 拉框平时只占用一行文本的空间 C 只有当用户点击时才会向下弹出所有的选项, 因此它比单选框要节省空间 C 下拉框可以很方便地增加、删除选项襄樊软件学院你的潜力,我们的动力! 基本控件? 下拉框C 下拉框分为两类:不可编辑的下拉框:用户只能从预设的项中选择 可编辑的下拉框:允许用户编辑、修改文本C 下拉框由两部分组成:文本框,它一直存在,显示用户选择的文本; 弹出式列表,显示所有预设的选项,它只有在用户点 击下拉框右侧的三角形按钮时才会出现襄樊软件学院你的潜力,我们的动力! 基本控件? 下拉框C 例题:两个下拉框,左图是普通状态,右图是 下拉框展开时的状态襄樊软件学院你的潜力,我们的动力! 基本控件? 下拉框String[] comboStr1 = {&10岁以下&, &11~20岁&, &20~30岁&, &30~40岁&, &40~50岁&, &50~60岁&, &60岁以上&}; JComboBox combo1 = new JComboBox(comboStr1); panel.add(combo1);C 创建下拉框的步骤是:建立一个字符串数组,将所有预设的选项都存储在字 符串数组中 创建下拉框对象,将字符串数组放到下拉框中 将下拉框对象放到面板上襄樊软件学院你的潜力,我们的动力! 基本控件? 下拉框C 这种方法创建的是不可编辑的下拉框, 只能从预设的选项中选择 C 右图给出不可编辑的下拉框在收起和下 拉状态下的界面外观 C 在下拉框收起的时候,所有内容都变成 深蓝色背景,无法修改其中的内容襄樊软件学院你的潜力,我们的动力! 基本控件? 下拉框C 创建可编辑的下拉框,需要调用setEditable函数 设置下拉框的属性:String[] comboStr2 = {&足球&,&篮球&,&羽毛球&,&乒乓球&,&象棋&,&围棋&}; JComboBox combo2 = new JComboBox(comboStr2); combo2.setEditable(true); panel.add(combo2);C 第三行代码的作用是将下拉框设置成可编辑状 态,如果参数为false,则下拉框是不可编辑的 状态襄樊软件学院 你的潜力,我们的动力! 基本控件? 下拉框C 对于可编辑的下拉框,即可以从预设的选项中 选择一项,也可以手动输入需要的内容,如下 图所示:襄樊软件学院你的潜力,我们的动力! 基本控件? 下拉框C 当下拉框收起时,它变成一个文本框,你可 以在其中输入文字 C 输入的内容只在当前有效,一般来说并不能 成为预设的选项 C 与单选框、复选框一样,下拉框一般也是在 用户点击“确定”按钮之后才处理其内容 C getSelectedItem函数,得到选择的文本 C getSelectedIndex函数,得到选择的项襄樊软件学院 你的潜力,我们的动力! 基本控件? 下拉框C 下面这段代码演示了这两个函数的功能:System.out.println(&你选择的体育运动是:& + combo2.getSelectedItem()); System.out.println(&它是下拉框中的第& + combo2.getSelectedIndex() + &项&);C 如果用户在界面中选择了“羽毛球”项,再点 击“确认”,程序显示的结果如下:襄樊软件学院你的潜力,我们的动力! 基本控件? 下拉框C 如果用户在界面中选择了“象棋”项,随后手 动将它改成了“国际象棋”,再点击“确认”, 则程序显示的结果如下:C getSelectedItem函数的作用是返回下拉框的文本 框部分的内容襄樊软件学院 你的潜力,我们的动力! 基本控件? 下拉框C 对于不可编辑的下拉框,函数返回的是用户选 择的内容;对于可编辑的下拉框,函数返回的 是经用户编辑以后的文本; C getSelectedIndex函数的作用是返回用户所选的选 项的序号。序号是从0开始计数的 C 如果用户没有选任何项,则返回“-1”; C 对于可编辑下拉框,如果用户手动修改了下拉 框的内容,使它与任何一项预设的选项都不相 同,则函数也返回“-1”;襄樊软件学院 你的潜力,我们的动力! 基本控件? 下拉框C 还有两个函数也很常用:getItemAt函数,获得某项选项的内容, getItemCount函数,获得选项的数量。C 这两个函数相结合,可以得到所有的预设选项, 如下面的代码所示:for (int i = 0; i & combo2.getItemCount(); i++) System.out.println(combo2.getItemAt(i));襄樊软件学院你的潜力,我们的动力! 基本控件? 下拉框C 显示的结果如下图所示:C getItemAt函数与getSelectedIndex函数相结合,可 以得到用户所选项的内容襄樊软件学院你的潜力,我们的动力! 基本控件? 下拉框C 下拉框还提供一系列函数用于添加、插入、删 除选项,这些函数列举如下:// 在预设选项列表的最后添加一项,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();襄樊软件学院你的潜力,我们的动力! 基本控件? 列表框C 列表框的作用是给出一系列选项,用户可以进 行单选或多选 C 从功能上,列表框与复选框的功能接近,不过 列表框比复选框更加灵活 C 从外观上,列表框与下拉框比较接近,不过列 表框是一直存在的,而下拉框的列表只有在鼠 标点击时才会出现 C 下图是一个简单的列表框界面:襄樊软件学院 你的潜力,我们的动力! 基本控件? 列表框襄樊软件学院你的潜力,我们的动力! 基本控件? 列表框C 列表框的建立分以下三步: C (1) 创建列表框对象 C 列表框是JList类的对象。与下拉框类似,在创 建列表框对象时,一般需要在构造函数中通过 一个字符串数组给出选项内容:String[] listStr = {&足球&,&篮球&,&排球&,&网球&,&羽毛球&, &乒乓球&,&游泳&,&长跑&,&登山&,&象棋&,&围棋&,&桥牌&}; JList list = new JList(listStr);襄樊软件学院你的潜力,我们的动力! 基本控件? 列表框C (2) 设置列表框属性 C 在创建列表框以后,需要设置它的三个属性: 选项模式、布局方向以及可见的行数 C 选项模式有三种:单项选择:只能选择一项 区间选择:可以选择一个区间范围 多项选择:可以选择一个区间,或几个文件襄樊软件学院你的潜力,我们的动力! 基本控件? 列表框C 下图显示了三种选项模式的区别:襄樊软件学院你的潜力,我们的动力! 基本控件? 列表框C 选项模式通过setSelectionMode函数来设定,函数 的参数表示三种选择模式:// 设置为单项选择模式 list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // 设置为区间选择模式 list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); // 设置为多项选择模式 list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);襄樊软件学院你的潜力,我们的动力! 基本控件? 列表框C 列表框的布局方向也有三种:横向换行:选项按行排列,一行放不下时换行放置, 如果行数太多,就添加上下滚动的竖滚条; 纵向换列:选项按列排列,一列放不下的话就换一列 放置,如果列数太多,就添加左右滚动的横滚条; 纵向布局:简单地将选项放在一列中,如果项目数太 多,就添加竖滚条以上下滚动; 缺省的布局方向是纵向布局襄樊软件学院你的潜力,我们的动力! 基本控件? 列表框C 下图给出了三种布局方向的外观:襄樊软件学院你的潜力,我们的动力! 基本控件? 列表框C 布局方向通过setLayoutOrientation函数来设置,该 函数的参数表示三种布局方向,如下面的代码 所示:// 设置为横向换行 list.setLayoutOrientation(JList.HORIZONTAL_WRAP); // 设置为纵向换列 list.setLayoutOrientation(JList.VERTICAL_WRAP); // 设置为纵向布局 list.setLayoutOrientation(JList.VERTICAL);襄樊软件学院你的潜力,我们的动力! 基本控件? 列表框C 可见的行数表示列表框在没有滚动条的情况下 所显示的行数,-1表示显示尽可能多的行,如 下面的代码所示:list.setVisibleRowCount(-1);C (3) 将列表框放到一个滚动条面板中 C 一般来说,列表框中包括的项目数都多于它能 显示的数量,因此需要将列表框放到一个滚动 条面板中,以便在需要时滚动襄樊软件学院你的潜力,我们的动力! 基本控件? 列表框C 如下面的代码所示:JScrollPane scrollpanel = new JScrollPane(list); scrollpanel.setPreferredSize(new Dimension(250,80));C 代码的第一行建立了一个滚动条面板,并将列 表框放在其中 C 第二行设定面板的初始尺寸为250*80 C 通过以上三个步骤,列表框就建立了襄樊软件学院你的潜力,我们的动力! 基本控件? 列表框C 常用的处理列表框的函数:getSelectedIndex,返回第一个选中的选项的序号 getSelectedValue,返回第一个选中的选项的值; getSelectedIndices,返回一个整数数组,其中保存有 所有选中的选项的序号; getSelectedValues,返回一个对象数组,其中保存有 所有选中的选项的内容; isSelectedIndex,函数的作用是判断某一项选项是否 被选中。 襄樊软件学院 你的潜力,我们的动力! 基本控件? 列表框C 例题,列表框功能演示:System.out.println(&你选择的第一项是:& + list.getSelectedValue() + &,它的 序号是:& + list.getSelectedIndex()); System.out.println(&你选择的所有项的内容和序号列举如下:&); int[] allIndices = list.getSelectedIndices(); Object[] allValues = list.getSelectedValues(); for (int i=0; i&allIndices. i++) System.out.println(& & + allValues[i] + & & + allIndices[i]); System.out.println(&检验第二项是否被选中:& + list.isSelectedIndex(1));襄樊软件学院你的潜力,我们的动力! 基本控件? 列表框C 如果用户选中第1、3、7项,如右图所 示: C 则点击“确定”以后,屏幕显示的结 果如下:襄樊软件学院你的潜力,我们的动力! 基本控件? 列表框C 第1行:显示用户第一项选择的内容和序号 C 第3、4行:返回序号数组和选项值数组,这两 个数组赋给了变量allIndices和allValues C 第5行:是一个循环,由数组allIndices的length变 量得到数组长度 C 第6行:逐个显示选中的项目和序号; C 第7行:检查第二项是否被选中,由于第二项没 有被选中,因此显示的结果是false襄樊软件学院 你的潜力,我们的动力! 基本控件? 菜单C 菜单几乎是每个应用程序的必备项,通过菜单 将程序的功能组织在一起 C 菜单有两种表现形式:菜单栏和弹出式菜单菜单栏一般位于主框架的顶端,包含了程序的全部功 能 弹出式菜单只有在用户单击鼠标右键时才会出现,它 给出了鼠标所指向组件的一些常用功能C 在Swing中,菜单栏通过JMenuBar实现,弹出式 菜单通过JPopupMenu实现。襄樊软件学院 你的潜力,我们的动力! 基本控件? 菜单C 建立菜单栏需要的三个步骤如下: C (1) 建立菜单栏对象JMenuBar menuBar = new JMenuBar(); frame.setJMenuBar(menuBar);C 首先,建立一个JMenuBar对象, C 随后,利用框架的setJMenuBar函数将菜单栏对 象放到框架的顶端襄樊软件学院你的潜力,我们的动力! 基本控件? 菜单C (2) 建立菜单组 C 菜单组的含义是一组菜单项,通过点击菜单组 可以显示它所包含的菜单项,如下图中的“文 件”,“帮助”就是两个菜单组。襄樊软件学院你的潜力,我们的动力! 基本控件? 菜单C 菜单组是JMenu对象,下面的代码建立了一个菜 单组并把它加入到菜单栏中:JM menu = new JMenu(&文件&); menuBar.add(menu);C (3) 建立菜单项 C 菜单项具有特定的功能,菜单项一般都会加入 动作监听器,以响应用户点击菜单项的动作, 完成特定的功能襄樊软件学院 你的潜力,我们的动力! 基本控件? 菜单C 下面的代码将一个菜单项加入菜单组中,并为 它添加动作监听器:JMenuItem menuI menuItem = new JMenuItem(&打开文件&); menuItem.addActionListener(new MenuActionListenerClass(this)); menuItem.setActionCommand(&打开文件&); menu1.add(menuItem);C 至此,基本的菜单栏就建好了,带有菜单项的 程序界面见下图:襄樊软件学院 你的潜力,我们的动力! 基本控件? 菜单襄樊软件学院你的潜力,我们的动力! 基本控件? 菜单C 弹出式菜单通过JPopupMenu对象实现,建立弹 出式菜单的过程与菜单栏大同小异:JPopupM popup = new JPopupMenu(); JMenuItem menuI menuItem = new JMenuItem(&打开文件&); menuItem.addActionListener(new MenuActionListenerClass(this)); menuItem.setActionCommand(&打开文件&); popup.add(menuItem);襄樊软件学院你的潜力,我们的动力! 基本控件? 菜单C 为了能够在鼠标右键单击时弹出菜单,需要建 立一个鼠标监听器类,响应鼠标消息:class PopupListener extends MouseAdapter { MenuBarD public PopupListener(MenuBarDemo frame) { this.frame = } public void mousePressed(MouseEvent e) { if (e.isPopupTrigger()) { frame.popup.show(e.getComponent(), e.getX(), e.getY()); } }襄樊软件学院你的潜力,我们的动力! 基本控件? 菜单C (2) 为组件添加鼠标监听器 C 下面的代码为文本区域组件添加鼠标监听器, 当鼠标在文本区域内单击右键时,即可弹出相 应的菜单:textArea1.addMouseListener(new PopupListener(this));C 编译并运行程序,在文本区域里点击鼠标右键, 可以看到弹出式菜单,如下图所示:襄樊软件学院你的潜力,我们的动力! 基本控件? 菜单襄樊软件学院你的潜力,我们的动力! 基本控件? 文本框C 文本框是一种非常简单、也非常常用的文本控 件,它可以让用户输入一行简短的文字。下图 显示了一个文本框界面:C 在后面“文本组件”部分会详细介绍文本框襄樊软件学院 你的潜力,我们的动力! 不可编辑组件? 不可编辑组件C 在用户图形界面中,有些组件的作用仅仅是向 用户提示,而不需要用户输入内容,这类组件 称为不能编辑的组件 C 不可编辑的组件主要包括标签、进度条和工具 提示? 标签C 标签是最常用的组件,它的作用是在界面上显 示一行文字襄樊软件学院 你的潜力,我们的动力! 不可编辑组件? 标签C 下面的代码创建并显示一个标签:JLabel label1 = new JLabel(&文字标签&); panel.add(label1);C 标签也可以显示图片,或者同时显示图片和文 字。图片是通过ImageIcon对象建立的,如下面 的代码所示:ImageIcon icon1 = new ImageIcon(&icon1.gif&); JLabel label1 = new JLabel(icon1); JLabel label2 = new JLabel(&图形标签&, icon1, JLabel.CENTER);襄樊软件学院你的潜力,我们的动力! 不可编辑组件? 标签C 需要注意的是,如果在标签的构造函数中同时 给出文字和图片,那么还需要给出第三个参数, 也就是标签的水平对齐方式 C 水平对齐方式有三种:JLabel.LEFT:左对齐 JLabel.CENTER:中间对齐 JLabel.RIGHT:右对齐 缺省的水平对齐方式是左对齐襄樊软件学院你的潜力,我们的动力! 不可编辑组件? 进度条C 在传输文件或某些长时间的工作,为了及时向 用户提示进度,可以使用进度条JProgressBar progressBar = new JProgressBar(0, 100); progressBar.setValue(0); progressBar.setStringPainted(true);C 创建进度条的步骤为: C 建立一个JProgressBar对象,对象的构造函数中 设定进度条的最小、最大值 C 设置进度条的当前值,刷新进度条襄樊软件学院 你的潜力,我们的动力! 不可编辑组件? 进度条C 进度条的外形如下图所示:? 工具提示C 工具提示是JComponent组件的一种性质 C 对于设置了工具提示的组件,当用户将鼠标在 组件上停留一两秒之后,就会出现有关该组件 功能的简单说明襄樊软件学院你的潜力,我们的动力! 交互的格式组件? 调色板C 调色板是一种特殊的面板,它提供了全面的颜 色选择工具JColorChooser tcc = new JColorChooser(new Color(128, 255, 128)); getContentPane().add(tcc, BorderLayout.CENTER);C 调用调色板步骤:新建一个JColorChooser对象,构造函数的参数表示 当前选中的颜色 将调色板控件放到面板中C 产生的调色板是一个有三页的面板:襄樊软件学院 你的潜力,我们的动力! 交互的格式组件? 调色板襄樊软件学院你的潜力,我们的动力! 交互的格式组件? 调色板襄樊软件学院你的潜力,我们的动力! 交互的格式组件? 调色板襄樊软件学院你的潜力,我们的动力! 交互的格式组件? 文件选择框C 文件选择框的作用是弹出一个标准的文件或文 件夹选择框,让用户从中选择文件或文件夹, 以进行文件的打开、保存等工作final JFileChooser fc = new JFileChooser(); int returnVal = fc.showOpenDialog(frame);C 显示文件选择框的步骤:创建一个JFileChooser对象 调用此对象的showOpenDialog函数襄樊软件学院你的潜力,我们的动力! 交互的格式组件? 文件选择框C 弹出的打开文件对话框,如下图所示:襄樊软件学院你的潜力,我们的动力! 交互的格式组件? 文件选择框C 用户选择文件之后,showOpenDialog函数返回 APPROVE_OPTION值 C 通过fc对象的getSelectedFile函数获得文件,如下 面的代码所示:if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); System.out.println(&打开文件:& + file.getName()); } else { System.out.println(&用户取消了打开文件的操作。&); }襄樊软件学院你的潜力,我们的动力! 文本组件? 文本框C 建立文本框控件的步骤是:首先创建一个文本 框对象,再把对象放到面板:JTextField text1 = new JTextField(30); panel.add(text1);C 文本框构造函数中的参数是文本框中可以显示 的字符长度 C 显示的字符长度不代表可以输入的字符串长度, 可输入的字符长度远比显示的长度长襄樊软件学院你的潜力,我们的动力! 文本组件? 文本框C 文本框对象的getText函数可以获得用户输入的 文字内容,如下面的代码:System.out.println(&您的通讯地址是:& + text1.getText());C 点击“确定”按钮,在屏幕上显示文本框中的 文字内容如下:襄樊软件学院你的潜力,我们的动力! 文本组件? 文本框C 文本框也可以设置动作监听器,当用户在文本 框中输入完文字,按回车键时,就会触发动作 监听器 C 例题:用户在文本框中输入一行文字,按回车 以后,文字自动出现在文本区域中:text1 = new JTextField(30); text1.addActionListener(new TextActionListenerClass(this)); panel1.add(text1);襄樊软件学院你的潜力,我们的动力! 文本组件? 文本框C 程序的界面如下所示:襄樊软件学院你的潜力,我们的动力! 文本组件? 文本区域C 文本区域是一块区域,用来显示和修改多行的 纯文本,一般都带有滚动条。下图显示的界面 中,上面是文本框,下面就是文本区域:襄樊软件学院你的潜力,我们的动力! 文本组件? 文本区域C 文本区域一般都放在滚动条面板中,这点类似 于列表框。下面的代码创建文本区域:JTextArea textArea1 = new JTextArea(5, 30); JScrollPane scrollPanel = new JScrollPane(textArea1, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);C 第一行代码创建了一个文本区域,它的构造函 数带有两个参数,分别表示显示的文本行数和 一行中的字符数襄樊软件学院 你的潜力,我们的动力! 文本组件? 文本区域C 第二行代码将文本区域放到一个滚动条面板中, 这个滚动条面板的后两个参数表示面板的横滚 条和竖滚条始终存在 C 文本区域的每行字符数随着默认字体的不同而 不同,不同字体下,不同字母的宽度也不同, 因此每行显示30个字符只是约数 C 如果要精确设定文本区域的大小,可以通过设 置滚动条面板的大小来完成襄樊软件学院你的潜力,我们的动力! 文本组件? 文本区域C 文本区域的常用属性包括:设置文本区域是否可以编辑(setEditable) 设置字体(setFont) 设置是否自动换行(setLineWrap) 设置是否在单词之间换行(setWrapStyleWord)C setEditable:设置文本区域是否可编辑。参数为 true表示可编辑,参数为false表示不可编辑襄樊软件学院你的潜力,我们的动力! 文本组件? 文本区域C setFont:设置字体、字号和风格:textArea1.setFont(new Font(&隶书&, Font.BOLD, 24));C setLineWrap:设置文字是否自动换行,参数为 true表示自动换行,false表示不自动换行 C setWrapStyleWord:设置是在单词之间换行,还 是在字符间换行。参数为true表示在单词间换行, false表示在字符间换行。这一项对中文文本基 本上没有影响襄樊软件学院你的潜力,我们的动力! 文本组件? 文本区域C 文本区域提供的用于文本读写的函数:读取全部文本(getText) 写入全部文本(setText) 添加文本(append) 插入文本(insert) 替换选定区域内的文字(replaceRange) 设置光标的位置(setCaretPosition) 选择全部文本(selectAll)襄樊软件学院你的潜力,我们的动力! 文本组件? 密码框C 密码框的作用是让用户输入密码。为了安全, 用户输入的密码不会在框内显示出来,而代之 以掩码“***”。密码框常用在登录界面,如下 图所示:襄樊软件学院你的潜力,我们的动力! 文本组件? 密码框C }

我要回帖

更多关于 智能制造是什么概念 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信