学习java 7.27

学习内容:

      创建树

      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对象后,就可以调用它提供的方法来添加数据行、插入数据行、删除数据行和移动数据行。
    

明天内容:

      用户登录案例

遇到问题:

      无

 

posted @ 2021-07-27 18:00  kuaiquxie  阅读(36)  评论(0编辑  收藏  举报