学习内容:

      创建树

      Swing 使用JTree对象来代表一棵树,JTree树中结点可以使用TreePath来标识,该对象封装了当前结点及其所有的父结点。
       当一个结点具有子结点时,该结点有两种状态:
        展开状态:当父结点处于展开状态时,其子结点是可见的;

        折叠状态:当父结点处于折叠状态时,其子结点都是不可见的。
        如果某个结点是可见的,则该结点的父结点(包括直接的、间接的父结点)都必须处于展开状态,只要有任意一个父结点处于折叠状态,该结点就是不可见的。

      JTree生成的树默认是不可编辑的,不可以添加、删除结点,也不可以改变结点数据:如果想让某个JITree对象变成可编辑状态,则可以调用JITree的setEditable(boolean b)方法,传入true即可把这棵树变成可编辑的树(可以添加、删除结点,也可以改变结点数据)。

      编辑树结点的步骤︰

      1.获取当前被选中的结点∶

        获取当前被选中的结点,会有两种方式:

        一:
        通过JTree对象的某些方法,例如TreePath getselectionPath()等,得到一个TreePath对象,包含了从根结点到当前结点路径上的所有结点;

        调用TreePath对象的object getLastpathcomponent()方法,得到当前选中结点

        二:
        调用JTree对象的 object getLastselectedPathcomponent()方法获取当前被选中的结点
      ⒉.调用DefaultTreeModel数据模型有关增删改的一系列方法完成编辑,方法执行完后,重绘JTree

     为ITree添加监听器:

      1.addTreeExpansionListener(TreeExpansionListener tel):添加树节点展开/折叠事件的监听器。

      2. addTreeSelectionListener(TreeSelectionListener tsl):添加树节点选择事件的监听器。

  
     修改JTree的选择模式∶
      JTree专门提供了一个TreeSelectionModel对象来保存该Tree选中状态的信息。也就是说,JTree组件背后隐藏了两个model对象,其中TreeModel用于保存该JIree 的所有节点数据,而TreeSelectionModel用于保存该JTree的所有选中状态的信息。
      程序可以改变Tree的选择模式,但必须先获取该ree对应的TreeSelectionModel对象,再调用该对象的setSelectionMode(int mode);方法来设置该ITree的选择模式,其中model可以有如下3种取值:
      1.TreeSelectionModeI.CONTIGuOUS_TREE_SELECTION:可以连续选中多个TreePath 。            

      2.TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION:该选项对于选择没有任何限制。      

      3.TreeSelectionModeI.SINGLE_TREE_SELECTION:每次只能选择一个 TreePath。

     使用DefaultTreeCellRenderer改变结点外观

      JTree默认的外观是比较单一的,它提供了如下几种改变结点外观的方式:
        1.使用DefaultTreeCellRenderer直接改变节点的外观,这种方式可以改变整棵树所有节点的字体、颜色和图标。
        2.为JITree 指定DefaultTreeCellRenderer的扩展类对象作为JTree的节点绘制器,该绘制器负责为不同节点使用不同的字体、颜色和图标。通常使用这种方式来改变节点的外观。
        3.为JTree指定一个实现 TreeCellRenderer 接口的节点绘制器,该绘制器可以为不同的节点自由绘制任意内容,这是最复杂但最灵活的节点绘制器。
      第一种方式最简单,但灵活性最差,因为它会改变整棵树所有节点的外观。在这种情况下,Jtree的所有节点依然使用相同的图标,相当于整体替换了]tree中节点的所有默认图标。用户指定的节点图标未必就比JITree默认的图标美观。

     扩展DefaultTreeCellRenderer改变结点外观

      DefaultTreeCellRenderer 实现类实现了TreeCellRenderer接口,该接口里只有一个用于绘制节点内容的方法:getTreeCellRendererComponent(),该方法负责绘制JTree节点。学习List的时候,如果要绘制List的列表项外观的内容,需要实现ListcellRenderer接口,通过重写getTreeCellendererComponent()方法返回一个Component对象,该对象就是JTree的节点组件。两者之间非常类似
      DefaultTreeCellRende rer类继承了lLabel,实现getTreeCellendererComponent()方法时返回this,即返回一个特殊的儿Label对象。如果需要根据节点内容来改变节点的外观,则可以再次扩展DefaultTreeCellRenderer类,并再次重写它提供的 getTreeCellRendererComponent()方法。

  

      实现TreeCellRenderer接口改变结点外观
      这种改变结点外观的方式是最灵活的,程序实现TreeCellRenderer接口时同样需要实现getTreecellRendererComponent()方法,该方法可以返回任意类型的组件,该组件将作为JTree的结点。通过这种方式可以最大程度的改变结点的外观。

      编辑表格

      JTable调整列宽:

        JTable使用TableColumn来表示表格中的每一列,JTable 中表格列的所有属性,如最佳宽度、是否可调整宽度、最小和最大宽度等都保存在该TableColumn中。

      JTable调整表格选择模式:
        与List类似的是,JTable使用了一个 ListSelectionModel表示该表格的选择状态,程序可以通过ListSelectionModel.setSelectionMode(int mode)控制JTable 的选择模式。

  

      自定义TableModel步骤:

      1.自定义类,继承AbstractTableModel抽象类,重写下面几个方法︰
        int getcolumncount():返回表格列的数量
        int getRowCount()∶返回表格行的数量
        object getvalueAt(int rowIndex,int columnIndex):返回rowIndex行,column列的单元格的值string getcolumnName(int columnIndex):返回columnIndex列的列名称
        boolean iscellEditable(int rowIndex,int columnIndex):设置rowIndex行,columnIndex列单元格是否可编辑
      2.创建自定义类对象,根据该对象,创建JTable对象

      不仅用户可以扩展 AbstractTableModel抽象类,Swing本身也为AbstractTableModel提供了一个DefaultTableModel实现类,程序可以通过使用DefaultTableModel实现类来创建JITable对象。通过DefaultTableModel对象创建JTable对象后,就可以调用它提供的方法来添加数据行、插入数据行、删除数据行和移动数据行。
    

明天内容:

      用户登录案例

遇到问题:

      无

学习java 7.27的更多相关文章

  1. 推介一个学习JAVA的系列教程-狗鱼IT教程

    介绍一个学JAVA的零基础学习JAVA的网站,推介一个学习JAVA的系列教程-狗鱼IT教程 下面是java的系教程: 1、[java教程]Java 教程 2、[java教程]Java 简介 3、[ja ...

  2. 学习java之基础语法(三)

    学习java之基础语法(三) java运算符 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运 ...

  3. 零基础如何学习java更有效呢?

    零基础学java,不知道该如何入手?也不知道学习的方向,很多人会问零基础怎么样学习,有没有什么入门的书籍推荐:只要方法正确,零基础学好java也是有机会的哦. 一.理解Java思想 Java是一门面向 ...

  4. 积极主动敲代码,使用Junit学习Java程序设计

    积极主动敲代码,使用JUnit学习Java 早起看到周筠老师在知乎的回答软件专业成绩很好但是实际能力很差怎么办?,很有感触. 从读大学算起,我敲过不下100本程序设计图书的代码,我的学习经验带来我的程 ...

  5. 如何接触学习java

    信息科技必将是未来的潮流,Java语言必将在时代的进步中发挥不可估量的作用,未来,掌握好一门实用而且有良好应用前景的技术是你们的首要任务. 零基础怎么学Java 多年Java教育培训经验事实表明,零基 ...

  6. 零基础如何系统学习Java Web

    零基础如何系统学习Java Web?   我来给你说一说 你要下决心,我要转行做开发,这样你才能学成. 你要会打字,我公司原来有一个程序员,打字都是两个手一指禅,身为程序员你一指禅怎么写出的代码,半个 ...

  7. (转)如何学习Java技术?谈Java学习之路

    51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典.如何学习Java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领 ...

  8. 《疯狂Java讲义》(一) ---- 关于学习Java的反思

    "听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论 ...

  9. 十天来学习java的心得体会

    有关学习java是几天来的心得体会: 十天学习java遇到很多问题,每个问题都是经过反复的看书本以及上网查找资料来解决的,发现这一点真的需要自己来而不是去遇到什么问题就去依靠他人(师兄.同学).在其中 ...

随机推荐

  1. 字符串与模式匹配算法(六):Needleman–Wunsch算法

    一.Needleman-Wunsch 算法 尼德曼-翁施算法(英语:Needleman-Wunsch Algorithm)是基于生物信息学的知识来匹配蛋白序列或者DNA序列的算法.这是将动态算法应用于 ...

  2. Photoshop cc 绿色版 最新版 下载

    Photoshop cc 绿色版 下载 Photoshop cc 绿色版 最新版下载百度网盘下载 Photoshop 下载提取码: dh6z 作为一个程序员, 不懂点基本的作图都不配"新时代 ...

  3. SpringCloud微服务实战——搭建企业级开发框架(十):使用Nacos分布式配置中心

    随着业务的发展.微服务架构的升级,服务的数量.程序的配置日益增多(各种微服务.各种服务器地址.各种参数),传统的配置文件方式和数据库的方式已无法满足开发人员对配置管理的要求: 安全性:配置跟随源代码保 ...

  4. 链表中倒数第K个结点 牛客网 程序员面试金典 C++ Python

    链表中倒数第K个结点 牛客网 程序员面试金典 C++ Python 题目描述 输入一个链表,输出该链表中倒数第k个结点. C++ /* struct ListNode { int val; struc ...

  5. 碰撞的蚂蚁 牛客网 程序员面试金典 C++ Java Python

    碰撞的蚂蚁 牛客网 程序员面试金典 C++ Java Python 题目描述 在n个顶点的多边形上有n只蚂蚁,这些蚂蚁同时开始沿着多边形的边爬行,请求出这些蚂蚁相撞的概率.(这里的相撞是指存在任意两只 ...

  6. CTF-Tools 一款CTF古典密码加解密工具

    CTF-Tools 一款CTF古典密码加解密工具 工具截图 工具简介 一款CTF编码.解码.加密.解密工具. 支持的编码解码: URL-UTF-8 URL-GB2312 Unicode Escape( ...

  7. redux 的简单实用案例

    redux 的简单实用案例 整体思想与结构 创建一个Action 创建一个Reducer 创建Store 在App组件开始使用 整体思想与结构 文件目录如下: 构建 action,通过创建一个函数,然 ...

  8. linux下go环境配置

    环境申明: centos 7.4 1.go下载最新的版本(linux) 下载本地后rz到服务器,然后tar -zxvf  go1.9.2.linux-amd64.tar.gz   解压出go文件放在 ...

  9. Java学习(十五)

    下棋又被暴打 所以心态有点爆炸,学完习又去打云顶,忘记写博客了... 所以今天也有点水了,这下棋真是搞崩我心态了. Java学了函数重载 大概的要点在这 还有Web的学习,否定伪类. 如 p:not( ...

  10. [第二章]c++学习笔记5(类型转换构造函数)

    使用例 析构函数 使用例 析构函数和数组 delete运算符导致析构函数的调用