您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 第07讲-Java图形界面
主讲:臧金玉第七讲Java图形界面2020/7/2前讲回顾在程序运行时发生的错误称为异常必须捕获被触发的每一个异常,否则程序不会正常终止Java使用try–catch–finally块来处理异常。finally块不是必须的,但不管是否发生了异常,都将执行finally块中的语句,return语句也无法阻止finally块中语句的执行catch块必须始终与try块在一起,不能单独存在程序可以使用throw语句来抛出明确的异常(异常对象)关键字throws用于列出一个方法可能引发的多个异常类型,强制调用者在调用此方法时,必须对这些异常进行捕捉自定义异常类应该是Exception类(或其子类)的子类Java中的垃圾回收就是将分配给对象但已再不使用的内存回收或释放的过程。String是最终类,不可改变大小;StringBuffer是字符串缓冲类,可改变大小。2本讲内容摘要Java图形界面编程简介Swing组件概述及其继承体系Swing中的容器概念(JFrame和JPanel)Swing中常用组件(手写、拖拽方式编程)Swing中的布局管理Swing中的事件处理机制目标:完成一个登录界面并响应输入3Java图形界面编程简介GUI概念:GraphicUserInterface,即图形用户接口。在Java1.0中,使用AWT(AbstractWindowToolkit,即抽象窗口工具箱)进行图形编程。缺点:可移植性差,难以提供给用户一致的行为;效率不高;存在诸多BUG在Java1.1之后,使用Swing组件进行图形编程。相对于AWT而言,提高了可移植性和运行效率,并且提供了内容更多、使用更为方便的组件,使用了新的AWT事件处理模型Swing并未完全取代AWT,只是使用了更好的GUI组件,并扩展了AWT中的组件。Java并不擅长于图形界面编程,Swing图形编程效率仍然偏低,且图形效果并不为大多数人接受4Swing组件概述Swing中的类基本上都以J开头Swing中的各种控件类均继承自JCompenent类,而JCompnent类继承自awt包的Container类在使用Swing进行图形编程时,仍然会用到awt包中的类,二者需结合使用Swing中的各控件类基本上都是JavaBean5JavaBean是一种符合某种特殊规则的类。JavaBean都有一个无参的构造函数,其属性都有相对应的getter和setter方法。Swing组件继承体系2-16ContainerWindowFrameJFrameDialogJDialogawt包中的类Swing包中的类Swing组件继承体系2-2ContainerJComponentJPanelJLabelJTextComponentJTextFieldJPasswordFieldJTextAreaJComboBoxJListJMenuBarAbstractButtonJToggleButtonJCheckBoxJRadioButtonJMenuItemJMenuJButtonJOptionPaneJScrollBar7awt包中的类Swing包中的类Swing中容器的概念Swing中的容器指的是可包含或容纳其它组件的组件Swing中所有的组件都直接或间接继承自awt包中的Container类,Container类就是一个容器类Container及其子类通过add方法向其上添加组件JFrame是最常见的容器类,为顶级容器。在Swing界面编程中,一般都是在这个容器上添加其它组件8JFrame的用法示例9//构造一个窗体对象,其标题为“我的第一个窗口程序”JFrameframe=newJFrame(“我的第一个窗口程序”);//设置窗体的大小(宽和高)frame.setSize(200,100);//设置窗体在屏幕中位置(x坐标和y坐标)frame.setLocation(100,100);//上两句合起来等同于frame.setBounds(100,100,200,100);//设置窗体可见frame.setVisiable(true);//关闭窗体时关闭程序frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JPanel的用法示例10JFrameframe=newJFrame(“添加了JPanel的窗口”);//构造一个面板(JPanel)对象,在面板上添加组件JPanlepanel=newJPanel();//将面板添加到顶级容器frame中frame.add(panel);frame.setSize(200,100);frame.setLocation(100,100);frame.setVisiable(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Swing组件之标签(JLabel)JLabel类:javax.swing.JLabel此组件主要用来放置提示文本或图形,或者二者的组合。SwingConstants是一个类,存放了Swing中的常用常量。如位置等。可通过容器类的add方法添加JLabel组件。11JFrameframe=newJFrame(“JLabel的用法”);JLabellbl1=newJLabel(“用户名”);JLabellbl2=newJLabel(“密码”);JLabellbl3=newJLabel(newImageIcon(“image/flower.jpg”));frame.add(lbl1);frame.add(lbl2);frame.add(lbl3,SwingConstants.Left);JLabel的构造函数JLabel():建立一个空白标签JLabel(Iconimage):建立一个带有图标的标签,默认排列方式为centerJLabel(Iconimage,inthorizontalAlignment):建立一个带有图标的标签,并指定其排列方式JLabel(Stringtext):建立一个含有文字的标签,默认排列方式为leftJLabel(Stringtext,inthorizontalAlignment):建立一个含有文字的标签,并指定其排列方式JLabel(Stringtext,Iconicon,inthorzontalAlignment):建立一个带文字和图标的标签,并指定其排列方式12JLabel的常用方法setHorizontalAlignment(intalignment):设置标签文字或图像的水平位置setHorizontalTextPosition(inttextPosition):设置标签文字相对于图像的水平位置setIcon(Iconicon):设置标签内的图像setIconTextGap(inticonTextGap):设置标签内文字或图像的垂直位置setText(Stringtext):设置标签文字setVerticalAlignment(intalignment):设置标签内文字或图像的垂直位置setVerticalPosition(inttextPosition):设置标签内文字相对于图像的垂直位置13Swing组件之面板(JPanel)JPanel本身是一个容器,可以向其中添加其它组件。JPanel不是顶级容器,需要添加到顶级容器中,才能显示。JPanel具备自身表面绘制图形功能。14JFrameframe=newJFrame(“JPanel的用法”);JPanelpanel=newJPanel();JLabellbl1=newJLabel(“用户名”);JLabellbl2=newJLabel(“密码”);JLabellbl3=newJLabel(newImageIcon(“image/flower.jpg”));panel.add(lbl1);panel.add(lbl2);panel.add(lbl3,SwingConstants.Left);frame.add(panel);Swing组件之按钮(JButton)继承自AbstractButton类通过添加事件监听器可以对用户的操作产生响应15JFrameframe=newJFrame(“JButton的用法”);JPanelpanel=newJPanel();JLabellbl1=newJLabel(“用户名”);JLabellbl2=newJLabel(“密码”);JButtonbtn=newJButton(“确定”);JLabellbl3=newJLabel(newImageIcon(“image/flower.jpg”));panel.add(lbl1);panel.add(lbl2);panel.add(lbl3,SwingConstants.Left);panel.add(btn);frame.add(panel);JButton的构造函数及常用方法JButton():创建不带有设置文本或图标的按钮JButton(Actiona):创建一个按钮,其属性从所提供的Action中获取JButton(Iconicon):创建一个带图标的按钮JButton(Stringtext):创建一个带文本的按钮JButton(Stringtext,Iconicon):创建一个带初始文本和图标的按钮。voidsetText(Stringvalue):设置按钮上的文本voidsetIcon(Iconicon):设置按钮图片16Swing组件之文本框(JTextField)JTextField用于文字输入或输出,且可对其中文字进行编辑JTextField只能输入单行文本,当输入较少时,可选此组件JTextField类:javax.swing.JTextField17JFrameframe=newJFrame(“JTextField的用法”);JPanelpanel=newJPanel();JLabellbl1=newJLabel(“用户名”);JTextFieldjtf=newJTextField(“panhou”);panel.add(lbl1);panel.add(jtf);jtf.setColumns(20);jtf.setEditable(false);frame.add(panel);JTextField的构造函数JTextField():建立一个空白文本框JTextField(Documentdoc,Stringtext,intcolumns):使用指定的文件模式建立一个文本框,并且设置其初始字符串和字段长度JTextField(intcolumns):建立一个文本框,并设置其初始字段长度JTextField(Stringtext):建立一个文本框,并设置其初始字符串JTextField(Stringtext,intcolumns):建立一个文本框,并设置其初始字符串和字段长度18JTextField的常用方法setColumns(intcolumns):设置文本框的字段长度setEditable(booleanb):设置文本框是否可被编辑setFont(Fontfont):设置文本框内文字的字体setText(Stringtext):设置文本框的字符串setHorizontalAlignment(intalignment):设置文本对齐方式,如JTextField.RightgetText():取得文本框的文本select():动态的选中文本框中的文本copy():复制文本框中的文本到系统剪贴板cut():剪切文本框上的文本到系统剪贴板paste():将系统剪贴板中的内容粘贴到文本框中19Swing组件之文本域(JTextArea)JTextArea可输入多行文本并进行编辑
本文标题:第07讲-Java图形界面
链接地址:https://www.777doc.com/doc-6279958 .html