学习内容:

      创建树

      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. JAVA笔记__窗体类/Panel类/Toolkit类

    /** * 窗体类 */ public class Main { public static void main(String[] args) { MyFrame m1 = new MyFrame() ...

  2. WPF进阶技巧和实战03-控件(3-文本控件及列表控件)

    系列文章链接 WPF进阶技巧和实战01-小技巧 WPF进阶技巧和实战02-布局 WPF进阶技巧和实战03-控件(1-控件及内容控件) WPF进阶技巧和实战03-控件(2-特殊容器) WPF进阶技巧和实 ...

  3. vue三级路由显示+面包屑

    问题一:如何让三级路由内容显示显示在一级路由页面 可以说是我点级二级路由导航的时候是不发生跳转的,但还要去动态的生成面包屑 const routes = [{ path: '/', name: 'Ho ...

  4. Redis安装、配置和卸载

    1.安装 mkdir /usr/local/redis 添加目录 wget [http://download.redis.io/releases/redis-4.0.1](http://downloa ...

  5. 单自由度系统中质量、阻尼和刚度变化对频率响应函数(FRF)影响图的绘制

    作者:赵兵 日期:2020-02-17 目录 单自由度系统中质量.阻尼和刚度变化对频率响应函数(FRF)影响图的绘制 1.     背景 2.     VISIO绘制 3.     Matlab绘制 ...

  6. split,cdn,shell脚本,tmux,记一次往国外服务器传大文件的经历

    需求是这样的:将一个大概680M的Matlab数据文件传到国外某所大学的服务器上,服务器需要连接VPN才能访问,由于数据文件太大,而且如果我直接ssh连过去或者用ftp传输,那么中间很可能中断. ps ...

  7. etcd原理详解代码剖析

    1 架构 从etcd的架构图中我们可以看到,etcd主要分为四个部分. HTTP Server: 用于处理用户发送的API请求以及其它etcd节点的同步与心跳信息请求. Store:用于处理etcd支 ...

  8. k3s单机版安装部署 附一键安装脚本

    作者:SRE运维博客 博客地址: https://www.cnsre.cn/ 文章地址:https://www.cnsre.cn/posts/211109907029/ 相关话题:https://ww ...

  9. C++ substr 的两个用法

    substr是C++语言函数,主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度.   basic_string substr(size_type _Off = 0,size_type _C ...

  10. Are we ready for learned cardinality estimation?

    Are we ready for learned Cardinality Estimation 摘要 文章包括三大部分: 对于一个静态的数据库,本文将五种基于学习的基数估计方法与九中传统的基数估计方法 ...