已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
复习提纲:图形界面必考内容: l JButton、JTextFiled JLabel的使用l ActionEvent(编程) ItemEvent MouseEvent事件处理(非编程)文件读取内容:(非编程)l 字符流、字节流的概念l 文件读取3种方式的流程l 文件的表示多线程:(非编程)l 多线程的概念l 多程的Java实现过程和方法网络(非编程)l TCP通信和UDP通信的概念l Socke通信的实现过程和相关类l UDP通信过程和相关类数据库(非编程)l Jdbc的概念l Jdbc驱动程序类型l Java操作数据库的步骤和相关类集合框架(非编程)l Collection的特点l Map的特点l ArrayList和HashMap的使用远程访问(非编程)l 远程访问的目的l 远程访问的实现过程和相关类多媒体(非编程)l 绘图坐标系l 绘图的实现方式和相关类l 定时器的使用考题形式: 选择、填空、程序填空、程序分析、编程组件部分AWT组件Swing组件1.1.1组件体系AWT组件和Swing组件实现技术不同。 AWT组件是JDK1.0和1.1平台用于开发GUI的工具,由于与操作系统联系紧密,被称为重量级组件,可移植性不好。 Swing组件称为轻量级组件,在AWT组件名称前冠以J字母就是其对应的Swing组件,例如,在AWT中的Button类表示按钮,在Swing中为JButton表示按钮。 AWT组件存在于java.awt包中,Swing组件存在于javax.swing包中。 Swing组件与AWT组件的最大不同是:Swing组件完全由Java语言实现,功能更强大,而AWT而不是。 所以今天大部分Java界面选用Swing组件实现。容器(顶层容器) 无论是AWT组件还是Swing组件,他们组成界面的思想都一样-容器包容基本组件的形式某界面Java中一般用JFrame对象表示一个用户界面容器(中间件)对界面进行区域划分容器(中间件)对界面进行区域划分界面上这个部分用于绘图-Java用一个面板JPanel对界面进行区域划分界面上这个部分用于控制-Java用一个面板JPanel对界面进行区域划分基本组件打印生成报表总而言之,Java的界面组成原理:每一个程序有一个界面-一个顶层容器,该界面可以用中间件将其划分成无数块,每一块上可以排放很多其他组件。下面以Swing组件为例介绍Java界面组成1.1.2基本组件(Swing组件)界面形式Swing组件类名JLabelJButtonJToogleButtonJCheckBoxJRadioButtonGroupJComboBoxJList(单行文本输入组件)JTextField(多行文本输入组件)JTextAreaJScrollBarJSliderJProgressBarJFormatedFieldJPasswordFieldJSpinnerJTreeJTable1.1.3容器(Swing组件)界面形式Swing组件类名JPanelJTabPaneJSplitPaneJScrollPaneJToolBarJDesJInnerFrameJLayeredPane1.1.4菜单组成(Swing组件)界面形式Swing组件类名JMenuBarJMenuJMenuItemJCheckBoxMenuItemJRadioButtonMenuItemJPopMenu1.1.5 Swing组件常用方法和使用形式容器类组件:主要功能是向该容器上添加组件,所以其常用方法即add函数。例如:JFrame jFrame1=new JFrame(“新窗口”);JButon jb1=new JButton(“测试按钮”);jFrame1.add(jb1);基本组件:文本类组件:void setText(String s) 修改显示的文本;String getText()获得显示的文本。1.3组成图形界面实例import java.awt.BorderLayout;import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;/* * * author nbstar */public class ZiZuchengJiemian public static void main(String args) Jisuanqi j1=new Jisuanqi();/产生一个计算器 j1.setSize(400, 300);/计算器界面为400x300大小 j1.setVisible(true);/使计算器界面可见 j1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/设置点击框架界面上关闭按钮时的默认操作为退出系统 class Jisuanqi extends JFrame /编写一个计算器框架类 JTextField jt1;/用于输入的文本框 JPanel jpZong;/总面板 JPanel jpwest;/西边的面板 JPanel jpnorth;/北边的面板 JPanel jpcenter;/中间的面板 JButton jbnorth = new JButton3;/北边按钮组 JButton jbwest = new JButton4;/西边按钮组 JButton jbcenter = new JButton16;/中间的按钮组 String jbnorthnames = C, CE, 退格; String jbwestnames = MC, MR, MS, M; String jbcenternames = 7, 8, 9, +, 4, 5, 6, -, 1, 2, 3, /, 0, ., %, =; public Jisuanqi() /描述计算器的界面组成 this.setTitle(计算器);/设置计算器标题 BorderLayout b1 = new BorderLayout();/创建一个边框是布局 this.setLayout(b1);/使用该布局管理当前界面. /初始化各种组件 jt1 = new JTextField(); /以下代码初始化北边面板 jpnorth = new JPanel(); GridLayout g1 = new GridLayout(1, 3);/1行3列的布局 jpnorth.setLayout(g1); for (int i = 0; i jbnorth.length; i+) jbnorthi = new JButton(this.jbnorthnamesi);/初始化个个按钮 this.jpnorth.add(this.jbnorthi);/将按钮放到面板上 /以下代码初始化西边面板 jpwest = new JPanel(); g1 = new GridLayout(4, 1);/四行一列的布局 jpwest.setLayout(g1); for (int i = 0; i jbwest.length; i+) jbwesti = new JButton(this.jbwestnamesi);/初始化个个按钮 this.jpwest.add(this.jbwesti);/将按钮放到面板上 /以下代码初始化中间的面板 jpcenter = new JPanel(); g1 = new GridLayout(4, 1);/四行一列的布局 jpcenter.setLayout(g1); for (int i = 0; i jbcenternames.length; i+) jbcenteri = new JButton(this.jbcenternamesi);/初始化个个按钮 this.jpcenter.add(this.jbcenteri);/将按钮放到面板上 /以下代码初始化计算器总面板 jpZong = new JPanel(); b1=new BorderLayout(); jpZong.setLayout(b1); jpZong.add(jpnorth,BorderLayout.NORTH); jpZong.add(this.jpwest,BorderLayout.WEST); jpZong.add(this.jpcenter,BorderLayout.CENTER); /以下代码初始化计算器界面 this.add(jt1, BorderLayout.NORTH);/将文本框放到北边区域 this.add(jpZong);/将jpZong放到中间区域 1.4.3事件处理实例(Action事件)public class TestJButtonShijian public static void main(String args) JButtonShijian j=new JButtonShijian(); j.setSize(400, 300); j.setVisible(true); j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); class JButtonShijian extends JFrame implements ActionListener public JButtonShijian() this.setTitle(测试按钮事件);/设置界面标题 JButton jb=new JButton(测试按钮);/产生一个按钮 this.add(jb);/将按钮放到界面中间,JFrame默认布局为BorderLayout jb.addActionListener(this);/注册jb的action事件监听者为当前对象 Override public void actionPerformed(ActionEvent e) /当按钮上点击事件发生时自动调用该函数 JButton b=(JButton)e.getSource();/获得本次事件的事件源:即在构造函数生成的jb按钮 b.setText(测试按钮事件成功);/将该按钮的显示文本改变 2.1.1常用输入输出流对象System.in:标准输入流-从键盘读取内容System.in.read();/从键盘读入一个字符System.out:标准输出流-向显示器显示内容System.out.println(“Hello World”);/向显示器输出内容2.1.2字节流java将读取数据对象成为输入流,能向其写入的对象叫输出流。Java的输入输入流有2组,一组操作基本单位是字节,故称字节流。其输入流是InputStream的子类,输入流是OutputStream的子类。结构图如下:输入流:输出流1)InputStream类Inputstream类和Outputstream类都为抽象类,不能创建对象,可以通过子类来实例化。InputStream是输入字节数据用的类,所以InputStream类提供了3种重载的read方法.Inputstream类中的常用方法:public abstract int read( ):读取一个byte的数据,返回值是高位补0的int类型值。public int read(byte b ):读取b.length个字节的数据放到b数组中。返回值是读取的字节数。该方法实际上是调用下一个方法实现的public int read(byte b , int off, int len):从输入流中最多读取len个字节的数据,存放到偏移量为off的b数组中。public int available( ):返回输入流中可以读取的字节数。注意:若输入阻塞,当前线程将被挂起,如果InputStream对象调用这个方法的话,它只会返回0,这个方法必须由继承InputStream类的子类对象调用才有用, public long skip(long n):忽略输入流中的n个字节,返回值是实际忽略的字节数, 跳过一些字节来读取public int close( ) :我们在使用完后,必须对我们打开的流进行关闭. 2)OutputStream类OutputStream提供了3个write方法来做数据的输出,这个是和InputStream是相对应的。public void write(byte b ):将参数b中的字节写到输出流。public void write(byte b , int off, int len) :将参数b的从偏移量off开始的len个字节写到输出流。public abstract void write(int b) :先将int转换为byte类型,把低字节写入到输出流中。public void flush( ) : 将数据缓冲区中数据全部输出,并清空缓冲区。public void close( ) : 关闭输出流并释放与流相关的系统资源。 Java中用File描述文件和目录相关信息。 File类中提供了各种获取文件及目录信息的函数 文件或目录的生成public File(String path);/*如果path是实际存在的路径,则该File对象/*表示的是目录;如果path是文件名,则该File对象表示的是文件。*/public File(String path,String name);/path是路径名,name是文件名public File(File dir,String name);/dir是路径名,name是文件名 文件名的处理String getName( ); /得到一个文件的名称(不包括路径)String getPath( ); /得到一个文件的路径名String getAbsolutePath( );/得到一个文件的绝对路径名String getParent( ); /得到一个文件的上一级目录名String renameTo(File newName); /将当前文件名更名为给定文件的 完整路径 文件属性测试boolean exists( ); /测试当前File对象所指示的文件是否存在boolean canWrite( );/测试当前文件是否可写boolean canRead( );/测试当前文件是否可读boolean isFile( ); /测试当前文件是否是文件(不是目录)boolean isDirectory( ); /测试当前文件是否是目录 普通文件信息和工具long lastModified( );/得到文件最近一次修改的时间long length( ); /得到文件的长度,以字节为单位boolean delete( ); /删除当前文件 目录操作boolean mkdir( ); /根据当前对象生成一个由该对象指定的路径String list( ); /列出当前目录下的文件2.3.4文件处理实例/* * To change this template, choose Tools | Templates * and open the template in the editor. */package javaapp2012.shiyan2;import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.InputStreamReader;import java.io.RandomAccessFile;import javax.swing.ButtonGroup;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JRadioButton;import javax.swing.JTextArea;/* * * author nbstar */public class TestJiShiBen public static void main(String args) JishiBen jishiben=new JishiBen(); jishiben.setVisible(true); class JishiBen extends JFrame implements ActionListener, ItemListener JMenuBar menuBar;/菜单栏 JMenu menuFile;/文件菜单 JMenuItem menuItem打开;/文件打开菜单 JMenuItem menuItem保存;/文件保存菜单 JFileChooser fileChooser; /文件选择器 int type;/操作的方式-0表示顺序存储,1表示随机读取,2表示字符流读取 JPanel panelCaozuo;/操作面板 JRadioButton jrb0, jrb1, jrb2;/分别表示选择中顺序读取/随机读取/字符流读取。 ButtonGroup bGroup;/按钮组,用来约束jrb0, jrb1, jrb2三个按钮的互斥 JTextArea textArea;/文本显示区域 public JishiBen() /初始化文件选择器 fileChooser = new JFileChooser(); /初始化菜单 menuBar = new JMenuBar(); menuFile = new JMenu(文件); menuItem打开 = new JMenuItem(打开); menuItem保存 = new JMenuItem(保存); menuFile.add(menuItem打开); menuFile.add(menuItem保存); menuBar.add(menuFile); this.setJMenuBar(menuBar); /初始化操作面板 jrb0 = new JRadioButton(顺序读取); jrb1 = new JRadioButton(随机读取); jrb2 = new JRadioButton(字符流读取); /初始化面板,面板的默认布局为FlowLayout panelCaozuo = new JPanel(); panelCaozuo.add(jrb0); panelCaozuo.add(jrb1); panelCaozuo.add(jrb2); /初始化按钮组,将jrb0, jrb1, jrb2按钮放到同一按钮组,使之选择时互斥 bGroup = new ButtonGroup(); bGroup.add(jrb0); bGroup.add(jrb1); bGroup.add(jrb2); /初始化界面,本界面是一个JFrame,默认BorderLayout textArea = new JTextArea(); this.add(panelCaozuo, BorderLayout.NORTH); this.add(textArea); this.setTitle(记事本); this.setSize(400, 30); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /注册菜单事件监听 /响音单选按钮的状态改变事件-ItemEvent jrb0.addItemListener(this); jrb1.addItemListener(this); jrb2.addItemListener(this); /响应菜单打开事件-ActionEvent this.menuItem打开.addActionListener(this); this.menuItem保存.addActionListener(this); Override public void itemStateChanged(ItemEvent e) /按钮状态改变事件响应函数 if (jrb0.isSelected() type = 0;/如果选中jrb0,采取顺序读取文件 else if (jrb1.isSelected() type = 1;/如果选中jrb1,采取随机读取文件 else if (jrb2.isSelected() type = 2;/如果选中jrb2,采取字符流读取文件 Override public void actionPerformed(ActionEvent e) /菜单点击事件响应函数 if (e.getSource() = this.menuItem打开) /如果是打开菜单 fileChooser.showOpenDialog(this);/文件选择器显示打开对话框 File f = fileChooser.getSelectedFile();/获得选中的文件 String neirong = ; switch (type) case 0: neirong = this.xunxuFileIn(f);/如果type=0,用顺序方式读取文件内容 break; case 1: neirong = this.suijiFileIn(f);/如果type=1,用随机方式读取文件内容 break; case 2: neirong = this.zifuliuFileIn(f);/如果type=2,用字符流方式读取文件内容 break; if (neirong != null) this.textArea.setText(neirong);/如果读取内容不为空,则在文本区域显示内容 else if (e.getSource() = this.menuItem保存) /如果是保存菜单 fileChooser.showSaveDialog(this);/文件选择器显示保存对话框 File f = fileChooser.getSelectedFile();/获得选中的文件 String neirong = this.textArea.getText();/获得文本框输入的内容 switch (type) case 0: this.xunxuFileOut(f, neirong);/顺序写入 break; case 1: this.suijiFileOut(f, neirong);/随机写入 break; case 2: this.zifuliuFileOut(f, neirong);/字符流写入 break; public String xunxuFileIn(File f) /顺序文件读取函数 if (f = null) return null; try /文件读取会触发IOException FileInputStream fin = new FileInputStream(f);/打开输入流 BufferedReader din = new BufferedReader(new InputStreamReader(fin);/包装输入流,便于格式化读取 StringBuffer sbuf = new StringBuffer();/定义内容存储缓冲区 String stemp; do /读取文件内容 stemp = din.readLine();/读取一行内容 if (stemp = null) break; sbuf.append(stemp + n);/读得的内容存入缓冲区,因为读得是一行内容,所以加一个换行符 while (stemp != null); fin.close();/关闭流 return sbuf.toString();/返回文件内容字符串 catch (Exception e) e.printStackTrace(); return null; public void xunxuFileOut(File f, String neirong) /顺序文件写入函数 if (f = null) return; try FileOutputStream fout = new FileOutputStream(f); fout.write(neirong.getBytes(); fout.close(); catch (Exception e) e.printStackTrace(); public String suijiFileIn(File f) /随机文件读入函数 if (f = null) return null; try RandomAccessFile frarin = new RandomAccessFile(f, r);/r表示以只读形式创建随机流 StringBuffer sbuf = new StringBuffer(); String stemp; do stemp = frarin.readLine(); if (stemp = null) break; sbuf.append(stemp + n); while (stemp != null); frarin.close(); return sbuf.toString(); catch (Exception e) e.printStackTrace(); return null; public void suijiFileOut(File f, String neirong) /随机文件写入函数 if (f = null) return; try RandomAccessFile frar = new RandomAccessFile(f, rw);/“rw”表示以可读可写方式对文件操作的随机流 frar.write(neirong.getBytes(); frar.close(); catch (Exception e) e.printStackTrace(); public String zifuliuFileIn(File f) /字符流读取文件函数 if (f = null) return null; try FileReader fre = new FileReader(f);/建立度文件字符流 BufferedReader din = new BufferedReader(fre);/包装以便于格式读取 StringBuffer sbuf = new StringBuffer(); String stemp; do stemp = din.readLine(); if (stemp = null) break; sbuf.append(stemp + n); while (stemp != null); din.close(); return sbuf.toString(); catch (Exception e) e.printStackTrace(); return null; public void zifuliuFileOut(File f, String neirong) /字符流写入文件函数 if (f = null) return; try FileWriter fwe = new FileWriter(f); fwe.write(neirong); fwe.close(); catch (Exception e) e.printStackTrace(); 线程共有五种状态:新建 就绪 运行 组赛 停止5种状态,各状态之间转换如上图所示。其中只有运行状态是正在执行。2)Thread类Java中所有的内容都是对象。线程-java中用Thread以及其子类对象描述Thread类中的常用方法public Thread()构造一个线程,其执行体是本类中的run函数public Thread(String name)构造一个名为name变量内容的线程,其执行体是本类中的run函数public Thread(Runable obj)构造一个线程,该线程的执行体定义在Runnable接口的子类中public void start()启动线程public void run()线程的执行体public void stop()停止线程public static void sleep(long m)throws InterruptedException使当前线程休眠m毫秒4)线程编程的实现步骤线程的编程实现有2种方式。编写类MyThread继承Thread类在MyThread类中重写public void run()函数,规定线程的执行任务在main函数中新建MyThread m1=new MyThread()在main中调用m1.start()用Thread的子类实现线程步骤编写类MyThread实现Runnable接口在MyThread类中重写public void run()函数,规定线程的执行任务在main函数中新建Thread t1=new Thread(new MyThread()在main中调用t1.start()用Runnable接口的子类实现线程步骤l 用Thread的子类实现线程/* * To change this template, choose Tools | Templates * and open the template in the editor. */package javaapp2012.shiyan2;/* * * author nbstar */public class TestThreadQiuhe public static void main(String args) ThreadQiuhe ths=new ThreadQiuhe5; int sumTotal=0; for(int i=0;iths.length;i+) thsi=new ThreadQiuhe(i);/新建线程对象 thsi.start();/启动线程 for(int i=0;iths.length;i+) sumTotal+=thsi.sum; System.out.println(sumTotal=+sumTotal); class ThreadQiuhe extends Thread/编写线程类继承自Thread int index; int sum; ThreadQiuhe(int index) this.index=index; public void run() for(int i=1;i21;i+) sum+=i; sum+=index; l 用Runnable接口的子类实现线程 package javaapp2012.shiyan2;/* * * author nbstar */pu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年四川省资阳市教师职称考试(理论知识)在线模拟题库及答案
- 2025新疆第八师石河子市人民医院面向社会招聘事业单位工作人员234人(公共基础知识)测试题附答案解析
- 2025年四川省成都市政府采购评审专家考试真题库及参考答案
- 2024年黄南州特岗教师招聘笔试真题汇编附答案解析
- 2025广西柳州钢铁集团有限公司十一冶集团社会招聘(公共基础知识)测试题附答案解析
- 2025广东东莞市桥头医院招聘纳入岗位管理编制外人员30人(公共基础知识)综合能力测试题附答案解析
- 2025年通榆县残疾人综合保障中心公开选调事业编制工作人员(3人)(公共基础知识)综合能力测试题附答案解析
- 2025中国联通校园招聘(内蒙古有岗)(公共基础知识)测试题附答案解析
- 毕业论文的研究总结语
- 2025福建福州市闽侯医保局招聘劳务派遣工作人员2人考试参考题库附答案解析
- 统计学基础及其应用总体分布分析
- 戴氏教育集团企业文化
- 植物学第五章第一二节蕨类课件
- 美容皮肤科学智慧树知到答案章节测试2023年西安海棠职业学院
- 器材设备类售后服务方案 服务承诺和保障措施
- GB/T 16823.3-2010紧固件扭矩-夹紧力试验
- DB11-T1834-2021 城市道路工程施工技术规程高清最新版
- 高分子物理聚合物的粘弹性课件
- 四年级数学教师家长会课件
- 微生物菌剂、生物有机肥项目申请报告可行性研究报告
- 电动客车培训课件
评论
0/150
提交评论