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/13 1/1  5/5 学会使用jdk以及对java源程序语句的基本注意事项有所了解
第二周 140/143  1/2 10/15 学会java基本数据类型与数组和c语言/c++在表达和用法上的相同/不同之处
第三周 276/419 1/3 20/35 java中运算符,表达式和语句的表现形式,类的声明,定义方法
第四周 600/1019 1/4 30/45 类和对象
第五周

150/1169

1/5 10/55 继承的作用,子类和父类的继承性,子类继承父类后方法的访问权限以及各种操作
第六周 100/1269 1/6 8/63 接口定义、使用方法和作用
第七周 100/1369 1/7 9/72 内部类(独有)包含匿名类和异常类(检测)的使用方法和作用
第八周 150/1869 1/8 10/82 java常用实用类和方法
第九周 100/1969 1/9 20/102 组件、容器、窗口、(如何处理事件:事件源,监视器、接口)

参考文献

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

猜你喜欢

转载自blog.csdn.net/weixin_40803490/article/details/84888483
今日推荐