Presentation is loading. Please wait.

Presentation is loading. Please wait.

Swing高级组件 主讲:赖国荣 QQ:31343080 www.sms98.cn.

Similar presentations


Presentation on theme: "Swing高级组件 主讲:赖国荣 QQ:31343080 www.sms98.cn."— Presentation transcript:

1 Swing高级组件 主讲:赖国荣 QQ:

2 目 标 JList 实现 事件监听 JTree JTable

3 Swing MVC MVC(Model-View-Controller),既模型-视图-控制器 。 模型:维护数据并提供数据访问方法。
视图:绘制模型的部分数据或所有数据的可视。 控制器:处理事件。 使用MVC模式的优点: 1、数据内容本身和显示方式分离开,可以将多个视图和控制器插入到一个模型中。 2、当模型发生改变时,视图会自动得到通知;模型中的属性发生变化时视图也随之改变。 3、模型独立视图,不用改模型来适应新的视图或控制器。

4 JList JList控件用于显示对象列表,并允许用户选择列表中的一项或多项。 以数组对象创建的List组件其选项将无法改变
JList(ListModel dataModel):利用listModel建立一个下拉列表 JList(Object[ ] listData):利用数组对象建立一个下拉列表 JList(Vector listData):利用矢量集建立一个下拉列表 以数组对象创建的List组件其选项将无法改变 以矢量集创建的List组件其选项值可以随需要进行修改 int[] getSelectedIndices():得到选中项的索引值 Object[] getSelectedValues():得到选中项的内容 boolean isSelectedIndex(int index):判断给定索引项有没被选中 void setListData(Obejct[] data):设置创建的下拉列表的数组对象 void setListData(Vector data) :设置创建的下拉列表的矢量集对象 void setModel(ListModel model):设置创建列表框的列表框模板 void setSelectionModel(listSelectionModel model):设置选择方式

5 例 子

6 ListModel与DefaultListModel
AbstractListModel是实现了ListModel接口的抽象类 通过继承该类实现必须的方法来创建一个ListModel对象来创建下拉列表 DefaultListModel是继承了AbstractListModel具体类 可以直接用new来创建一个ListModel对象来创建下拉列表,而不需要实现任何方法

7 AbstractListModel例子

8 DefaultListModel例子 使用带值的模型来创建给列表 创建形式上更简单

9 JList选项改变事件 在JList类中可以通过addListSelectionListener()方法来实现检测用户是否改变了JList选项。 实现步骤: 实现ListSelectionListener接口 给JList增加选项改变监听 jList1.addListSelectionListener(this); 实现valueChanged(e)方法,写上自己的业务逻辑

10 例 子

11 JTree JTree树是用来显示一组层次分明的数据,可展开也可合并 构造函数 JTree():创建一个默认的树
JTree(Hashtable value):根据Hashtable对象中值的关系来创建一个树 JTree(Object[] value):根据数组中值建立一个数,且该树有多个根节点 JTree(Vector value):根据矢量对象中值创建一个树 JTree(TreeModel model):根据指定的数据模型来创建树 JTree(TreeNode node):使用TreeNode对象来创建树 JTree(TreeNode node,boolean asksAllowsChildren):使用TreeNode对象来创建树,并指定该节点是否允许有子节点

12 例 子

13 例 子

14 JTree事件处理 JTree也偶一个非常重要的事件:选项改变监听事件; 实现步骤: 案例: 简单记事本
实现TreeSelectionListener接口 为JTree对象增加addTreeSelectionListener()方法 实现valueChanged(TreeSelectionEvent e)方法 案例: 简单记事本

15 例 子 实现分析: 左边一个JTree实现记事本的选择 右边一个编辑面板JEditorPane,编辑浏览内容
JTree与JEditorPane都要具有滚动条的功能,因此都必须放在一个滚动面板中JScrollPane 左右两边的滚动面板必须被一个分割面板JSplitPane分开

16 例 子

17 例 子

18 表格-JTable-1 1、表格由一个表格头部(列头部),表格列和单元值组成。
2、表格单元值由实现TableCellRender接口的对象绘制,并由实现了CellEditor接口的对象进行编辑。 3、表格支持很多选取模式,包括行、列和单元选取。 4、表格单独在swing.table包中有接口和类。 5、只有放在滚动窗格中的表格才会显示表格头部。

19 表格-JTable-2 单元 表格头

20 表格-JTable-3 构造函数 public JTable( )
public JTable( int numRow , int numColumns ) public JTable( Object[ ][ ] rowData , Object[ ] columnNames ) public JTable( Vector rowData , Vector columnNames ) public JTable( TableModel ) public JTable( TableModel , TableColumnModel ) public JTable( TableModel , TableColumnModel , ListSelectionModel )

21 表格-JTable-4 实现步骤: 继承AbstractTableModel类实现自己的表格模型
根据需要改写其中的方法,getColumnCount(),getRowCount(),getColumnName(),getValueAt()等 根据自己创建的表格模型来创建一个表格

22 例 子

23 例子

24 表格模型类图 JTable TableColumn ModelListener JComponent ListSelection
CellEditor Listener TableModel Listener implements extends implements implements implements JTable TableModel Table ColumnModel implements implements Abstract TableModel DefaultTable ColumnModel ListSelection Model extends implements Default TableModel DefaultList Model

25 TableColumnModelEvent,
表格事件处理 表格模型 模型 功能 激发的事件 ListSelectionModel 维护选取模式、选取间隔和一个选取是否正在调整 ListSelectEvent TableColumnModel 存储表格列;添加、移动和删除列 TableColumnModelEvent, ChangeEvent TableModel 为单元数据、数据类型、行数、列数以及单元是否可编辑提供访问方法 TableModelEvent

26 事件例子 实现步骤: 居住地的值可以通过下拉框取值 当语文与数学中有一门考试成绩不到60分的,考试合格就为false

27 例 子

28 例 子

29 总结 JList 实现 事件监听 JTree JTable


Download ppt "Swing高级组件 主讲:赖国荣 QQ:31343080 www.sms98.cn."

Similar presentations


Ads by Google