1 / 22

第十二章  

第十二章  . Swing III. 回顾. Swing 菜单由 JMenubar 、 JMenuitem 和 JMenu 组成 创建 JMenuBar 的实例可生成菜单。 JPopupMenu 可显示在屏幕的任何地方 JCheckBoxMenuItem 和 JRadioButtonMenuItem 用于实现菜单栏中的复选框和单选按钮 JOptionPane 类用于显示对话框. 本章目标. 运用 JTable 运用 JTree. JTable 9 -1. 以表格方式维护大量数据比以列表方式更加方便

angeni
Download Presentation

第十二章  

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第十二章   Swing III

  2. 回顾 • Swing 菜单由 JMenubar、JMenuitem和 JMenu组成 • 创建 JMenuBar 的实例可生成菜单。 • JPopupMenu可显示在屏幕的任何地方 • JCheckBoxMenuItem和 JRadioButtonMenuItem用于实现菜单栏中的复选框和单选按钮 • JOptionPane类用于显示对话框

  3. 本章目标 • 运用 JTable • 运用JTree

  4. JTable 9-1 • 以表格方式维护大量数据比以列表方式更加方便 • 使用 Swing 中的 JTable 类可以创建表 显示数据并且允许用户对其进行编辑 JTable 对存储数值数据非常有用 它不存储数据,只提供数据的呈现方式

  5. JTable 9-2 • 创建一个 TableDemo 工程 • 单击“File”“New” • 选择“Application”,输入 TableDemo 作为应用程序的类名称 • 单击“Next”,输入 TableFrame 作为框架的类名称,并输入“欢迎使用 JTable”作为其标题 • 单击“Next”,确保已选定“Create Runtime Configuration”选项 • 单击“Finish” • 单击“Design”选项卡 • 选择组件面板中的“JTable”,并将其拖入框架

  6. JTable 9-3 工程名称 表框架的类名称

  7. JTable 9-4 JTable jTable1 = new JTable(); 实例化 JTable 控件后将生成代码

  8. JTable 9-5 以下代码用于添加行和列 Object[ ][ ] cells = { {"Java",new Integer(01),new Integer(400)}, {"Oracle",new Integer(02),new Integer(500)}, {"C#",new Integer(03),new Integer(700)}, }; String[] colnames={"课程名称","课程编号","学费(元)"};

  9. JTable 9-6 JTable jTable1 = new JTable(cells,columns); 使用二维对象数组来传递构造函数 以填充 JTable 实例

  10. JTable 9-7 • 运行该工程 • 此时创建的表无表头 • 要显示表头,请单击“Design”选项卡 • 选定该表,右击其中的表头属性 • 单击关联菜单中的“Expose as Class level variable”选项 • 此时将显示表头 • 运行该工程 • 为表头设置属性 演示:示例 1

  11. JTable 9-8 将背景色设置为Pink

  12. JTable 9-9 • package tabledemo; • import java.awt.BorderLayout; • import java.awt.Dimension; • import javax.swing.JFrame; • import javax.swing.JPanel; • import javax.swing.JTable; • import java.awt.*; • import javax.swing.*; • import javax.swing.table.JTableHeader; • public class TableFrame extends JFrame { • JPanel contentPane; • Object[ ][ ] cells = • { • {"Java",new Integer(01),new Integer(400)}, • {"Oracle",new Integer(02),new Integer(500)}, • {"C#",new Integer(03),new Integer(700)}, • }; private void jbInit() throws Exception { contentPane = (JPanel) getContentPane(); contentPane.setLayout(null); setSize(new Dimension(400, 300)); setTitle("欢迎使用 JTable"); jTable1.setBackground(Color.yellow); jTable1.setBorder(null); jTable1.setGridColor(Color.black); jTable1.setSelectionBackground(Color.orange); jTable1.setBounds(new Rectangle(11, 29, 251, 161)); jTableHeader1.setBackground(Color.pink); jTableHeader1.setBounds(new Rectangle(10, 10, 252, 20)); contentPane.add(jTableHeader1); contentPane.add(jTable1); } } • 以下代码将在“Source”选项卡中自动生成 String[] colnames={"课程名称","课程编号","学费(元)"}; JTable jTable1 = new JTable(cells, colnames); JTableHeader jTableHeader1 = jTable1.getTableHeader(); public TableFrame() { try { setDefaultCloseOperation(EXIT_ON_CLOSE); jbInit(); } catch (Exception exception) { exception.printStackTrace(); } } /** *初始化组件. * * @throws java.lang.Exception */ 用户输入代码以添加行和列

  13. JTree • 树状图以垂直的分层结构方式描述信息 • Windows 资源管理器或文件管理器用树状结构来描述文件和文件夹 • 使用 JTree 类可在 Java 中创建这些结构 • 树层次结构中的每一行称为一个节点 • 每个树都有一个根节点,可由这个根节点展开所有节点 • 节点包含实际的数据

  14. 节点类型 JTree的节点 根节点 节点上不包含节点 枝节点 节点上下都包含节点 叶节点 节点下不包含节点

  15. 创建默认节点的 JTree • 创建一个名为 TreeDemo 的工程 • 单击“File”“New”,然后单击 Application • 输入 TreeDemo 作为类名称,然后单击“Next” • 输入 TreeFrame 作为框架类名称 • 单击“Next”,并确保已选定“Create Runtime Configuration”选项 • 单击“Finish” • 单击“Design”选项卡,将 JScrollPane添加至框架 • 选定 JTree并将其拖至 JScrollPane

  16. 创建 JTree

  17. JTree的缺省构造方法 实例化 JTree 控件以后可生成以下代码 JTree jTree1 = new JTree();

  18. JTree的构造方法 用于构建 JTree 的构造方法 JTree(Hashtable ht); JTree(Object obj[ ]); JTree(TreeNode tn); JTree(Vector v); 第三个构造方法接收一个TreeNode 对象。该对象本身可以是 JTree 组件,也可以是DefaultMutableTreeNode 类的对象。用户可以使用DefaultMutableTreeNode 对象来实现自定义的JTree

  19. 创建自定义的 JTree • 自定义树结构的代码片段 ... // 创建根节点 DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点"); // 创建枝节点 DefaultMutableTreeNode parent = new DefaultMutableTreeNode("书籍"); DefaultMutableTreeNode leaf = new DefaultMutableTreeNode("java"); // 将叶节点添加至枝节点 parent.add(leaf) // 将枝节点添加至根节点 root.add(parent); jTree2 = new JTree(root); contentPane.add(jTree2); ...

  20. 事件处理 public void jTree2_valueChanged(TreeSelectionEvent e) { try{ DefaultMutableTreeNode node = (DefaultMutableTreeNode) jTree2.getLastSelectedPathComponent(); String name = ""; Object nodeInfo = node.getUserObject(); if(node.isRoot()){ txtName.setText(""); txtNode.setText(nodeInfo.toString()); txtType.setText("根节点"); txtNumber.setText(""+node.getChildCount()); } else { name = node.getParent().toString(); txtName.setText(name); txtNode.setText(nodeInfo.toString()); if (node.isLeaf()) { txtType.setText("叶节点"); } else { txtType.setText(“枝节点"); } int number = node.getChildCount(); txtNumber.setText("" + number); } } catch (Exception ex) {} }

  21. JTree示例 演示:示例 3

  22. 总结 • JTable 不包含数据,也不存储数据,只提供呈现数据的方式 • JTree 类表示数据的层次结构图 • 树层次结构中的每一行称为一个节点 • 只要展开或折叠 JTree 对象中的任何节点,都会产生事件 • JTree 中的节点有根节点、枝节点和叶节点三种类型 • DefaultMutableTreeNode 对象提供 TreeNode 对象的默认实现

More Related