201711671235学习《java程序设计》第九周学习总结

教材学习内容总结

1.JavaSwing概述

java的java.awt包(Java抽象工具包)提供了许多设计GUI的组件类

Component类的子类或间接子类创建的对象组件
Container的子类或间接子类创建的对象容器

容器—调用—>public add()方法==》把组件(容器)—添加—>该容器(容器的嵌套)

容器—调用—>removeAll()| remove(Component 0c)==》移除容器中所有组件/参数c指定的组件

容器<==>组件

容器添加/移除组件时,让容器调用validate()方法==》保证容器中的组件能正确实现

2.窗口

Component<-Container<-

                          JComponent                   

 JPasswordFiled  JcomDoBox  JRadioButton  JCheckBox  JButton  JTextField  JTextArea  JTree  JTable  Jpanel

       密码框            下拉列表          单选按钮         复选框     文本按钮    文本框      文本区    树组件   标签     面板

                                                                             Window

                       Frame                                                                                                           Dialog

  JFrame/子类->创建对象==形成==>窗口<==放进= =组件(x窗口)                       JDialog->创建对象==形成==>对话框

2.1JFrame常用方法

JFrame(String s)创建标题为s的窗口
public void setBound(int a,int b,int width,int height)(a,b)设置窗口具体位置,即距屏幕左面a个像素....,width为窗口宽,height为高
public void setSize(int width,int height)设置窗口大小
public void setLocation(int x,int y)设置窗口位置

public void setVisible(boolean b)

设置窗口是否可见,默认不可见
public void setResizable(boolean b)设置窗口是否可调整大小,默认可以
public void dispose()撤销当前窗口,并释放当前窗口所使用的资源
public void setDefaultCloseOperation(int operation)设置右上角关闭图标

operation取值 DO_NOTHING_ON_CLOSE(什么不做)

HIDE_ON_CLOSE(隐藏当前窗口)

DISPOSE_ON_CLOSE(隐藏当前窗口并释放窗口使用的其他资源)

EXIT_ON_CLOSE(结束窗口所在应用程序)

2.2菜单条、菜单、菜单项

菜单条由JMenuBar类创建,菜单由JMenu类创建、菜单项由JMenuItem类创建,嵌入子菜单由JMenu类(JMenuItem的子类)创建

菜单条(菜单(子菜单(菜单项)+菜单项))

菜单上的图标:Icon icon=new Imagelcon(“a.gif”),Icon声明一个图标,使用其子类ImageIcon类创建一个图标

3.1常用容器

3.1.1IPanel面板(默认FlowLayout布局)

组件==添加==>面板==添加==>容器

JTabbedPane选项卡窗格创建JTabbedPane容器:public JTabbedPane(int tabPlacement)(tabPlacement确定选项卡位置)一个选项卡对应一个组件add(String text,Component c)(把组件c1添加到JTabbedPane中,并指定和组件c对应的选项卡的文本提示是text)
滚动窗口JScrollPane 只能添加一个组件,通过滚动条观看组件JTextArea(文本框)不自带滚动条,JScrollPane scroll=new JScrollPane(new JTextArea())
拆分窗口JSplitPane

JSplitPane(int a,Component b,Component c)

JSplitPane(int a,boolean b,Component c,Component d)

a:HORIZONTAL_SPLIT(水平)||VVERTICAL_SPLIT(垂直)

 

拆分成两部分(左右||上下) 
b决定当拆分线移动时,组件是否连续变化
JLayeredPane分层窗口   add(JComponent com,int layer)(layer指定组件com所在层)

3.1.2常用布局

设置布局:setLayout(布局对象)

FlowLayout布局(FlowLayout())从左到右排列居中对齐组件调用public void setPreferredSize(Dimension preferredSize)
BorderLayout布局

分为东南西北中五个区域(中间的区域最大)

组件会被替换

容器.add(组件,BorderLayout.CENTER/NORTH/SOUTH/WEST/EAST)
CardLayout布局先来在上,依次向下排序

a.CardLayout card=new CardLayout()(创建CardLayout对象作为布局)

b.con.setLayout(card)(使用容器的setLayout()方法为容器设置布局)

c.con.add(String s,Component b)(将b加入容器,s是代号)

d.card.show(con,s)(显示容器con中组件代号为s的组件)

GridLayout布局顺序放在网格(网格大小相同,组件与其大小也相同),最多添加m*n个组件 
null布局

setBounds(int a,int b,int

width,int height)(有绝对定位)

位置不会随对话框大小变化

BoxLayout布局盒式容器(行列形容器) 

4.处理事件

4.1事件处理模式

事件源能够产生事件的对象
监视器对对象的事件源进行监视(addActionListener(监视器))
处理事件的接口监视器对象的类声明实现相应的接口,以便事件源出发监视器时监视器可以调用接口方法处理事件

4.2事件

 ActionEvent事件ItemEvent事件DocumentEvent事件MouseEvent事件焦点事件键盘事件
事件源

文本框、按钮、菜单项、密码框、单选框

选项框、下拉列表文本区任何组件组件按下、释放或敲击键盘
注册监视器addActionListener(ActionListener listener)addItemListener(ItemListener listen)

addDocumentListener(DocumentListener listen)

addMouseListener(MouseListener listener)addFocusListener(FocusListener listener) 
接口

在java.awt.event包中,事件被触发,监视器.actionPerformed(ActionEvent e)处理事件

在java.awt.event包中,事件被触发,监视器.itemStateChanged(ItemEvent e)处理事件

接口方法:a.public void changedUpdate(DocumentEvent e)

b.public void removeUpdate(DocumentEvent e)

c.public void insertUpdate(DocumentEvent e)

处理的事件:(在事件源上)a.按下鼠标

b.释放鼠标

c.单击鼠标

d.鼠标进入(退出)事件源

接口方法:a.public void focusGained(FocusEvent e)

b.public void focusLost(FocusEvent e)

接口方法:a.public void keyPressed(KeyEvent e)

b.public void keyTyped(KeyEvent e)

c.public void KeyReleased(KeyEvent e)

方法

a.public Object getSourse()

b.public String getActionCommand()

ItemEvent事件对象.getSource()||getItemSelectable()返回ItemEvent事件的事件源 

a.getX/y()获取鼠标在事件源坐标系中的x/y坐标

b.getModiifiers()获取鼠标的左键或右键

c.getCilckCount()获取鼠标被单击的次数

d.getSourse()获取发生鼠标事件的事件源

public boolean requestFocusInWindow()获取输入焦点public int getKeyCode()判断哪个键被按下、释放或敲击

4.3事件总结

4.3.1授权模式

事件源调用方法将某个对象注册为自己的监视器

4.3.2接口回调

当事件源发生时接口立马回调被类实现的接口中的某个方法

4.3.3方法绑定

监视器必须绑定某个方法来处理事件

4.3.4保持松耦合

尽量让事件源所在的类和监视器是组合关系

2.使用MVC结构

模型(M):存储数据的对象

视图(V):为模型提供数显示的对象

控制器(C):处理用户交互操作,对于用户的操作作出响应,让模型和视图进行必要的交互,即通过视图修改,获取模型的数据;当模型中的数据变化时,让视图显示。

6.对话框

有模式对话框:当对话框处于激活状态,只能让程序响应对话框,且将阻塞其他线程执行,用户不能激活对话框所在程序的其他窗口,直到对话框消失不见

 消息对话框输入对话框确认对话框颜色对话框自定义对话框
 有模式有模式(有输入文本的文本框、确认和取消按钮)有模式  
静态方法public static void showMessageDialog(Component parentComponent,String message,String title,int messageType)public static void showInputDialog(Component parentComponent,Object message,String title,int messageType)public static void showConfirmtDialog(Component parentComponent,Object message,String title,int messageType)public static Color showDialog(Component component,String title,Color initialColor)

a.JDialog()

b.JDialog(JFrame owner)

解释

parentComponent:可见对话框的位置

message:对话框显示的信息

title:对话框标题

messageType:外观

parentComponent:指定对话框依赖的组件(parentComponent为null时,组件在屏幕正方显示)

message:对话框提示的信息

title:对话框标题

messageType:外观

parentComponent:指定对话框可见位置(parentComponent为null时,组件在屏幕方显示)

message:对话框提示的信息

title:对话框标题

messageType:外观

component:对话框可见位置

title:对话框标题

initialColor:颜色对话框返回的初始颜色

a.构造一个无标题的始终不可见的对话框

b.构造一个无标题的始终不可见的无模式的对话框(owmer是对话框依赖的窗口,owner为null时,对话框依赖一个默认不可见的窗口)

7.树组件和表格组件

JTree类的对象称为树组件

 树组件表格组件
 

DefaultMutableTreeNode类实现了MutableTreeNode接口

所以DefaultMutableTreeNode创建的对象可以成为树上的结点

以行和列的形式显示数据
构造方法

a.DefaultMutableTreeNode(object userObject)

b.DefaultMutableTreeNode(object userObject,boolean allowChildren)

a.JTable()创建默认的表格模型

b.JTable(int a,int b)创建a行b列的默认模式表格

c.JTable(Object data[][],Object columnName[])创建默认表格模式对象,并显示由data指定的二维数组的值,其列名由数组colunmnName指定

d.刷新表格显示:表格.repaint()

解释

a.默认有子节点,用add()添加其他结点作为它的子节点

一个结点可以使用setAllowsChildren(boolean b)设置是否允许有子节点

 
事件addTreeSelectionListener(TreeSelectionListener listener)获得监视器 
接口方法:public void valueChanged(TreeSelectionEvent e)
树使用getLastSelectionPathComponent()获取选中的结点

8.按钮绑定到键盘

8.1AbstractAction类和特殊的监控器

按钮绑定键盘操作:将按钮绑定到敲击某个键

监视器:创建监视器的类必须实现ActionListener接口的子接口Action

8.2指定监视器的步骤

获取输入映射

按钮调用public final InputMap getInputMap(int condition)返回一个InputMap对象

绑定按钮的键盘操作

返回的映射调用public void put(KeyStroke keystroke,Object actionMapKey)将敲击键盘上的某键指定为按钮的键盘操作

为按钮的键盘操作指定监视器

按钮调用public final ActionMap getActionMap()返回一个ActionMap对象

ActionMap actionMap=button.getActionMap();

actionMap.调用public void put(Object key,Action action)为按钮的键盘操作指定监视器(实现敲击键盘上的键通知监视器

9.打印组件

步骤:

获取ToolKit对象组件调用getToolkit()返回系统提供的Toolkit对象的引用
获得PrintJob对象

getPrintJob(Frame f,String s,null)获取PrintJob对象

获取Graphics对象PrintJob对象使用getGraphics()获取Graphiics对象
打印组件组件调用paintAll(Graphics对象)打印该组件及其子组件
打印位置为避免打印覆盖,Graphics对象可以使用(Graphics类中方法)translate(int x,int y)改变组件在打印页的打印位置

 

教材学习中的问题和解决过程

菜单条、菜单、菜单项之间使用add()方法时添加和被添加的对象分不清楚:通过读例题分析操作的过程

学习进度条

 代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行20篇400小时会用java语言独立设计程序
第一周13/131/1 5/5学会使用jdk以及对java源程序语句的基本注意事项有所了解
第二周140/143 1/210/15学会java基本数据类型与数组和c语言/c++在表达和用法上的相同/不同之处
第三周276/4191/320/35java中运算符,表达式和语句的表现形式,类的声明,定义方法
第四周600/10191/430/45类和对象
第五周

150/1169

1/510/55继承的作用,子类和父类的继承性,子类继承父类后方法的访问权限以及各种操作
第六周100/12691/68/63接口定义、使用方法和作用
第七周100/13691/79/72内部类(独有)包含匿名类和异常类(检测)的使用方法和作用
第八周150/18691/810/82java常用实用类和方法
第九周100/19691/920/102组件、容器、窗口、(如何处理事件:事件源,监视器、接口)

参考文献

《java2实用教程(第5版)》

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值