学习内容:

      创建树

      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. hdu 5179 beautiful number(构造,,,,)

    题意: 一个如果称作是漂亮数,当且仅当满足: 每一位上的数字是[1,9],从高到时低数字大小降序,且有di%dj=0(i<j) 例:931 给一个区间[L,R],问这个区间里有多少个漂亮数. 1 ...

  2. 【Go语言学习笔记】Go语言的基础语法

    上一篇已经说了,Go的语法和C的很接近,直接看看异同即可. 变量 变量名还是一样,字母或下划线开头,区分大小写.不能是关键字. Go定义了int32和int64这种类型来显示声明大小,和C里面的sho ...

  3. GDB 调试技巧(不断更新中......)

    一.break到不同类的同名函数 方法: 在函数前面加类名以及作用域运算符 eg : break A::func //break 到类A的func函数 程序如下: //gdb_test.cpp #in ...

  4. 从0到1使用Kubernetes系列(六):数据持久化实战

    本文是从 0 到 1 使用 Kubernetes 系列第六篇,上一篇<从 0 到 1 使用 Kubernetes 系列(五):Kubernetes Scheduling>介绍了 Kuber ...

  5. JMeter源码导入到Intellij IDEA (八)

    亲测:jmeter源码导入Intellij IDEA,导入,编译,运行! 一.环境:windows10操作系统,jdk1.8,Intellij IDEA 2018.3,jmeter5.0 下载jmet ...

  6. 攻防世界 WEB 高手进阶区 unserialize3 Writeup

    攻防世界 WEB 高手进阶区 unserialize3 Writeup 题目介绍 题目考点 PHP反序列化 __wakeup漏洞 Writeup 题名 unserialize 是反序列化函数名 了解一 ...

  7. centos如何上网

    问题 centos如何上网 解决方法 第一步: 打开VMware,选择菜单栏的Edit->Virtual Network Editor(虚拟网络编辑器).点击Restore Defaults(即 ...

  8. Java8新特性之方法引用&Stream流

    Java8新特性 方法引用 前言 什么是函数式接口 只包含一个抽象方法的接口,称为函数式接口. 可以通过 Lambda 表达式来创建该接口的对象.(若 Lambda 表达式抛出一个受检异常(即:非运行 ...

  9. appium环境搭建基于安卓(mac系统)

    1.需要环境 JDK Python Andriod SDK Node.js Appium Appium-Python-Client Appium-doctor 2.安装jdk(我的版本是1.8) 下载 ...

  10. 18-Spring Cloud Alibaba Nacos

    简介 为什么叫Nacos 前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service Nacos是什么 一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平 ...