Java语言程序设计 备考整理 因教材过于陈旧建议仅作复习使用

  • Java语言程序设计
    • 第8章 图形用户界面
      • Swing类的层次结构
      • 容器
        • 窗口容器
        • 对话框容器
        • 面板容器
      • 组件
      • 组件布局管理
        • 顺序布局管理器
        • 边界布局管理器
        • 卡片布局管理器
        • 网格布局管理器
        • 组件的精确定位方式
      • 事件处理机制
        • Jav的事件处理机制
        • 通过自定义内部类创建监听器对象
        • 在注册时通过匿名类直接创建监听器对象
        • 通过主类创建监听对象
        • 实现多个事件接口的方式
        • 事件适配器类与内部类
        • 内部类
      • 创建容器与组件的基本步骤小结
    • 第9章 高级组件
      • 菜单栏
      • 工具栏
      • 树形菜单
      • 选项卡面板
      • JApplet容器
      • 表格

Java语言程序设计

考试用书: 《Java语言程序设计》(第三版)
出版社:清华大学出版社
作者:邵丽萍、绍光亚、张后扬
出版时间:2008

第8章 图形用户界面

Swing类的层次结构

容器

可以添加其它组件的组件被称为容器。

窗口容器

JFram是一个用来创建窗口的类,它是一个顶级容器框架,在其中可以添加各种组件。
使用方式:

import javax.swing.*;public class JF0 extends JFrame {public JF0 (String s){super(s); //调用父类构造方法setBounds(200,200,500,400); //设置大小setVisible(true); //设置是否显示try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); // 显示窗口外观}catch (Exception e){setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //处理如果外观显示未成功 则关闭窗口对象}}
}

对话框容器

对话框(Dialog类)是GUI中常见的窗口对象。对话框和普通窗口最大的区别是对话框是依附在某个窗口上的,一旦它所依附的窗口关闭了,对话框也要随着关闭。在对话框窗口中也可以添加其它组件,所以它也是一个容器。

import javax.swing.*;public class JD extends JDialog {public JD (JFrame f, String s){super(f,s); //调用父类构造方法setBounds(300,300,200,200); //设置大小setVisible(true); //设置是否显示setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); //设置默认关闭方法}
}

面板容器

面板(JPanel)类是一个无边框的容器,可以包含其它面板或组件,使用面板的目的是为了区分层次,分区域管理各种组件。面板与顶级容器不同,它是一个中间容器,它即是容器又是组件。一个窗口中可以添加多个面板对象。

import javax.swing.*;
import java.awt.*;public class JP1 extends JFrame {public JP1(JFrame f, int x, int y, int w, int h){Container c = getContentPane(); //通过JFrame 自带的方法创建面板c.setLayout(null);c.setBackground(Color.ORANGE);f.add(c); //添加面板到 fJPanel p = new JPanel(); //通过new的方式创建面板p.setBounds(x,y,w,h);p.setBackground(Color.blue);c.add(p);//添加面板到面板c}
}JP1 jp1 = new JP1(new JF0("添加面板的窗口"),100,50,200,200);

组件

组件(JComponent)是构成GUI的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。组件一般作为一个对象放置在容器内。通过容器的add方法可以吧组件加入到容器中。
这部分主要是实践会考,还是多练习熟悉方法和结构。

JLabel //标签组件
JButton //按钮组件
TextField //文本框组件
JTextArea //文本区组件,多行文本
JRadioButton //单选按钮组件
JCheckBox //复选框组件
JComBoBox //下拉列表组件

组件布局管理

组件布局管理器管理各个组件的位置,在容器中使用setLayout方法可以调用不同的布局管理器。

顺序布局管理器

顺序布局(FlowLayout) 是最基本的布局管理器。把组件一个一个从左到右排列,一行排满之后转到下一行继续排列。它会根据容器大小随时调整容器中的组件大小。

边界布局管理器

边界布局(BorderLayout)管理器把容器分为5个区:北区、南区、东区、西区和中区。
边界布局只能容纳5个组件即东、南、西、北、中。(可以嵌套组件,但是嵌套的一层只能有5个组件)

卡片布局管理器

卡片布局(CardLayout)管理器可以管理多个组件,它将组件像卡片一样叠放起来,每次只显示一个。

网格布局管理器

网格布局(GridLayout)管理器把容器区域分成若干个网格,每个网格可以放一个组件。
创建网格布局管理器时可以给出网格的行数和列数。

组件的精确定位方式

容器中存放组件也可以不用布局管理器。

//第一步
setLayout(null); //先通过设置布局管理器为null
//第二步
setBounds(int x, int y, int w, int h); //xy是组件左上角的坐标点,wh是组件的大小。

事件处理机制

Jav的事件处理机制

  1. 事件:程序和用户的交互是通过事件实现的。实现发生后会交给事件处理的方法进行处理,如果没有编写处理方法,程序就不能和用户交互,事件将被忽略。
  2. 事件处理方法:当发生事件时做出的反应,通过监听器对象可以对事件源对象进行监听,当监听到事件时,就可以调用事件处理方法处理事件问题。
  3. 事件处理模型:事件源对象、事件监听器对象、事件对象。
    (1)能产生事件的组件叫做事件源,如按钮。
    (2)事件监听器注册在事件源对象(按钮或包含按钮的容器上),用来监听事件是否发生,当事件发生时将调用事件处理方法解决问题。
    (3)事件对象用来封装已发生的事件信息,在事件发生后,将信息传递给事件处理方法进行处理。

通过自定义内部类创建监听器对象

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class JB1 extends JFrame {public JB1(JFrame f, JPanel p){f.add(p);p.add(new Label("按一下可以听到响声", Label.CENTER));Button b = new Button("按钮");p.add(b);BHandler h = new BHandler();b.addActionListener(h);}public static void main(String args[]){JB1 jb1 = new JB1(new JF0("单击按钮事件"), new JPanel());}private class BHandler implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {Toolkit.getDefaultToolkit().beep();}}
}

在注册时通过匿名类直接创建监听器对象

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class JB2 extends JFrame {public JB2(JFrame f, JPanel p){f.add(p);p.add(new Label("按一下可以听到响声", Label.CENTER));Button b = new Button("按钮");p.add(b);b.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {Toolkit.getDefaultToolkit().beep();}});}public static void main(String args[]){JB1 jb1 = new JB1(new JF0("单击按钮事件"), new JPanel());}}

通过主类创建监听对象

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class JB3 extends JFrame implements ActionListener {public JB3(JFrame f, JPanel p){f.add(p);p.add(new Label("按一下可以听到响声", Label.CENTER));Button b = new Button("按钮");p.add(b);b.addActionListener(this);}public static void main(String args[]){JB1 jb1 = new JB1(new JF0("单击按钮事件"), new JPanel());}@Overridepublic void actionPerformed(ActionEvent e) {Toolkit.getDefaultToolkit().beep();}
}

实现多个事件接口的方式

一般是在主类实现多个接口,然后注册这些接口的实现。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;public class DrawLine extends Applet implements MouseListener, MouseMotionListener {int x1, y1, x2 , y2;public void init(){addMouseListener(this);addMouseMotionListener(this);}public void pain(Graphics g){g.drawLine(x1, y1, x2 , y2);}@Overridepublic void mouseClicked(MouseEvent e) {}@Overridepublic void mousePressed(MouseEvent e) {x1 = e.getX();y1 = e.getY();}@Overridepublic void mouseReleased(MouseEvent e) {}@Overridepublic void mouseEntered(MouseEvent e) {}@Overridepublic void mouseExited(MouseEvent e) {}@Overridepublic void mouseDragged(MouseEvent e) {x2 = e.getX();y2 = e.getY();repaint();}@Overridepublic void mouseMoved(MouseEvent e) {}
}

事件适配器类与内部类

java.awt.event 包中还声明了一组带Adapter标记的类,称为适配器类。它们是一些抽象类,其中声明方法与接口方法相同。使用Adapter 可以不用实现全部的方法,实现精简代码的目的。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;public class DrawLine extends Applet implements MouseListener, MouseMotionListener {int x1, y1, x2 , y2;public void init(){addMouseListener(new M1());addMouseMotionListener(new M2());}public void pain(Graphics g){g.drawLine(x1, y1, x2 , y2);}private M1 extends MouseAdpter {public void mousePressed(MouseEvent e) {x1 = e.getX();y1 = e.getY();}}private M2 extends MouseMotionAdpter {public void mouseDragged(MouseEvent e) {x2 = e.getX();y2 = e.getY();repaint();}}
}

内部类

Java中可以把一个类声明为另一个类的成员。这样的类被称为内部类。
内部类可以无条件的使用主类的所有成员,包括私有成员。内部类的作用域仅限于包容它的主类。
内部类可以被声明为static、最终类、抽象类。

创建容器与组件的基本步骤小结

(1)创建顶级容器(通常为窗体对象)。
(2)创建内容面板,设置背景颜色,设置布局管理器。
(3)创建普通面板,设置背景颜色,设置位置、大小,设置布局管理器。
(4)创建组件,设置背景颜色,设置其位置、大小、字体等。
(5)将面板添加到窗口,将组件添加到指定面板。
(6)创建事件监听器,实现事件接口方法。
(7)给事件源注册监听器。

第9章 高级组件

菜单栏

菜单栏是图形用户界面的重要组成部分,主要由菜单棒(MenuBar)、菜单(Menu)、菜单项(MenuItem)和复选菜单项(CheckBoxMenuItem)等对象组成。

工具栏

树形菜单

选项卡面板

JApplet容器

表格

辽宁自考 Java语言程序设计 课程代码 01019 备考整理(四)相关推荐

  1. 辽宁自考 Java语言程序设计 课程代码 01019 备考整理(一)

    Java语言程序设计 备考整理 因教材过于陈旧建议仅作复习使用 Java语言程序设计 第1章 Java快速入门 1.1 Java简介: 1.2 Java的开发环境与运行环境: 1.3 初步了解Java ...

  2. 2012年1月java_全国2012年1月自考Java语言程序设计(一)试题及答案.doc

    全国2012年1月自考Java语言程序设计(一)试题及答案 全国2012年10月自考Java语言程序设计(一)试题 课程代码:04747 选择题部分 一.单项选择题 本大题共10小题,每小题1分,共1 ...

  3. abcdefg顺序Java打印,全国2012年10月自考JAVA语言程序设计(一)试题及答案

    全国2012年10月自考Java语言程序设计(一)试题 课程代码:04747 选择题部分 一.单项选择题(本大题共10小题,每小题1分,共10分) 在每小题列出的四个备选项中只有一个是符合题目要求的, ...

  4. java语言程序设计勇_自考Java语言程序设计(一)串讲笔记

    自考Java语言程序设计(一)串讲笔记.txt43风帆,不挂在桅杆上,是一块无用的布:桅杆,不挂上风帆,是一根平常的柱:理想,不付诸行动是虚无缥缈的雾:行动,而没有理想,是徒走没有尽头的路.44成功的 ...

  5. 将数所有奇数移到数组前java_全国2014年4月自考Java语言程序设计(一)真题

    绝密★考试结束前 全国2014年4月高等教育自学考试 Java语言程序设计(一)试题 课程代码:04747 请考生按规定用笔将所有试题的答案涂.写在答题纸上. 选择题部分 注意事项: 1.答题前,考生 ...

  6. 【4747】java语言程序设计(一)2011年10月考试复习资料_全国2011年10月自考Java语言程序设计(一)试题3...

    30.以下程序的界面有一个文本区text,一个按钮button.程序运行时,单击按钮,则? 将文本区中的内容输出到out,其中out为BufferWriter类的一个对象.? public void ...

  7. 教育技术学习《基于 CPS 模型的翻转课堂教学模式构建——以“JAVA 语言程序设计”课程为例》笔记

    作者河南师范大学叶海智教授2016现代教育技术 本文中提到的CPS即创造性问题解决的英文首字母,是美国学者帕恩斯1981年文章提出的.是这样,不要因为感觉自己教育学的概念不深入就敢去应用,或者太老了怕 ...

  8. JAVA语言程序设计(基础篇)第四章——课后习题解

    在这里,我选择了几个知识点涉及稍微较多的课后习题进行求解(若有错误,欢迎斧正) 文章目录 4.1(几何:五边形的面积) 4.2(最大圆距离) 4.5(几何:正多边形的面积) 4.6(圆上的随机点) 4 ...

  9. JAVA语言程序设计(基础篇)——第四章例题

    随机产生一个随机的两位数字,提示用户输入一个两位数字,根据以下规则确定用户是否中彩票: 如果用户输入的数字完全匹配彩票中的数字,奖金为10000美元. 如果用户输入的所有数字匹配彩票中的所有数字,奖金 ...

最新文章

  1. 转:读AD里特殊的属性in C#
  2. 如何在SAP云平台上使用MongoDB服务 1
  3. [vue] 使用vue渲染大量数据时应该怎么优化?说下你的思路!
  4. c语言一个数组后添加元素append,jQuery 追加元素、拼接元素的方法总结(append、html、insertBefore、before等)...
  5. 新自动化文档生成-go语言-docx生成
  6. 数据库原理—常用的DBS产品简介(六)
  7. 用c#语言制作ktv点歌系统,KTV点歌系统的设计与实现的设计和实现(C#,C/S,Access)
  8. log explorer for sql 不存在或访问被拒绝_原创干货 | 未授权访问漏洞批量化
  9. 二叉树的前中后序遍历的非递归形式【Java】
  10. 防saq注入_盛大在线另一分站某SQL注入
  11. java 斗地主出牌算法_斗地主智能(AI)出牌算法
  12. python项目 from models import * 报错
  13. UI设计中面性图标设计总结
  14. PCL官网学习OpenNI Grabber 调用奥比中光Astra s 遇到问题openni2_grabber.cpp @ 325 : No devices connected.
  15. java 实现回收站功能,回收站功能在 Linux 中的实现
  16. python的下载安装以及两种打开方式
  17. 超级跑车法拉利的历史
  18. js点击使内容变成可编辑状态
  19. 大数据+咖啡因| 可口可乐的转型升级探索
  20. Eclipse配置tomcat服务器及tomcat简介

热门文章

  1. 浅谈密码学的历史发展过程
  2. 20169220 网络攻防实践 第九周实验——Nmap
  3. 安卓软件开发进阶之工具也疯狂
  4. 【财经期刊FM-Radio|2020年12月18日】
  5. C# try、catch、finally含义
  6. JS之前台参数提交到后台,双引号转义为quot;解决办法
  7. 如何在Instagram上保存帖子和管理收藏
  8. MP MyBatis-Plus
  9. 关押罪犯 并查集~~~
  10. Nginx+jwPlay搭建流媒体服务器,记忆播放