java swing表格和树

合集下载

java中jtable的用法

java中jtable的用法

java中jtable的用法一、JTable简介JTable是Java Swing包中的一个组件,用于在图形用户界面(GUI)中显示和编辑表格数据。

它可以显示任何类型的数据,包括文本、数字、日期和图像等。

二、创建JTable1. 创建一个空的JTable可以通过以下代码创建一个空的JTable:```JTable table = new JTable();```2. 从二维数组创建JTable可以通过以下代码从二维数组创建一个简单的JTable:String[][] data = {{"John", "Doe"}, {"Jane", "Doe"}};String[] columnNames = {"First Name", "Last Name"};JTable table = new JTable(data, columnNames);```3. 从TableModel创建JTable可以通过实现TableModel接口并使用它来创建一个定制的TableModel,然后将其传递给JTable构造函数来创建一个自定义的JTable。

4. 从数据库中获取数据并创建JTable可以通过使用Java数据库连接(JDBC)API与数据库进行交互,并将结果集转换为TableModel,然后将其传递给JTable构造函数来从数据库中获取数据并创建一个自定义的JTable。

三、设置表格属性1. 设置表头可以使用以下代码设置表头:```String[] columnNames = {"First Name", "Last Name"};table.setColumnIdentifiers(columnNames);```2. 设置表格行高和列宽可以使用以下代码设置表格行高和列宽:```table.setRowHeight(30);table.getColumnModel().getColumn(0).setPreferredWidth(100); ```3. 设置表格背景色和前景色可以使用以下代码设置表格背景色和前景色:```table.setBackground(Color.white);table.setForeground(Color.black);```4. 设置表格字体可以使用以下代码设置表格字体:```Font font = new Font("Arial", Font.PLAIN, 14);table.setFont(font);```5. 设置表格边框可以使用以下代码设置表格边框:```Border border = BorderFactory.createLineBorder(Color.black); table.setBorder(border);```四、渲染器和编辑器1. 渲染器渲染器用于将单元格中的值呈现为用户界面上的文本或图像。

swing中Jtable的使用方法

swing中Jtable的使用方法

如何使用Table利用JTable 类,可以以表格的形式展示数据,可设置允许用户编辑数据。

JT able 本身不拥有或者缓存数据;它只是数据的视图。

这里有一个放在滚动面板上的典型表格:本文展示如何完成一些常见的表格相关的任务:包括以下部分:(1)创建一个简单的表格(2)向容器添加表格(3)改变每每一栏的宽度(4)用户选择(5)创建表格模型(6)监听数据改变(7)点燃数据改变事件(8)概念:编辑器和渲染器(9)使用自定义渲染器(10)为单元格指定提示工具(11)为列头指定提示工具(12)排序和过滤(13)使用组合框作为编辑器(14)使用其他编辑器(15)使用编辑器验证用户的文本输入(16)打印(17)例子列表(1)创建一个简单的表格SimpleTableDemo.java中的表格在一个字符串数组中声明各个列名Java代码1String[] columnNames = {"First Name",2"Last Name",3"Sport",4"# of Years",5"Vegetarian"};数据初始化并存储在二维数组:Java代码6Object[][] data = {7 {"Kathy", "Smith",8"Snowboarding", new Integer(5), new Boolean(false)},9 {"John", "Doe",10"Rowing", new Integer(3), new Boolean(true)},11 {"Sue", "Black",12"Knitting", new Integer(2), new Boolean(false)},13 {"Jane", "White",14"Speed reading", new Integer(20), new Boolean(true)},15 {"Joe", "Brown",1617"Pool", new Integer(10), new Boolean(false)}18};接着表格使用这些数据和列名构造一个表格:Java代码19JTable table = new JTable(data, columnNames);有两个接收数据的JT able 构造器:∙JTable(Object[][] rowData, Object[] columnNames)∙JTable(Vector rowData, Vector columNames)这些构造函数的好处是容易实现,而缺点是:∙他们自动设置每个单元格为可编辑∙数据类型都视为一样的(字符串类型)。

Swing学习

Swing学习
12
JTable 9-9
JTree
树状图以垂直的分层结构方式描述信息 Windows 资源管理器或文件管理器用树状结构来描述文 件和文件夹 使用 JTree 类可在 Java 中创建这些结构 树层次结构中的每一行称为一个节点 每个树都有一个根节点,可由这个根节点展开所有节点 节点包含实际的数据
13
10
演示:示例 1
JTable 9-8
将背景色设置为Pink
11
package tabledemo; private void jbInit() throws Exception { import java.awt.BorderLayout; contentPane = (JPanel) getContentPane(); import java.awt.Dimension; 以下代码将在“Source”选项卡中自动生成 contentPane.setLayout(null); String[] colnames={"课程名称","课程编号","学费(元)"}; import javax.swing.JFrame; setSize(new= new JTable(cells, colnames); JTable jTable1 Dimension(400, 300)); import JTable"); setTitle("欢迎使用 javax.swing.JPanel; JTableHeader jTableHeader1 = jTable1.getTableHeader(); import javax.swing.JTable; jTable1.setBackground(Color.yellow); public TableFrame() { import java.awt.*; jTable1.setBorder(null); try { jTable1.setGridColor(Color.black); import javax.swing.*; setDefaultCloseOperation(EXIT_ON_CLOSE); jTable1.setSelectionBackground(Color.orange); jbInit(); import javax.swing.table.JTableHeader; jTable1.setBounds(new Rectangle(11, 29, 251, 161)); } catch (Exceptionclass TableFrame extends JFrame { public exception) { 用户输入代码以添加行和列 jTableHeader1.setBackground(Color.pink); exception.printStackTrace(); JPanel contentPane; jTableHeader1.setBounds(new Rectangle(10, 10, 252, 20)); } Object[ ][ ] cells = contentPane.add(jTableHeader1); } { contentPane.add(jTable1); /** {"Java",new Integer(01),new Integer(400)}, }*初始化组件. {"Oracle",new Integer(02),new Integer(500)}, } * {"C#",new Integer(03),new Integer(700)}, * @throws ng.Exception }; */

JavaSwing介绍

JavaSwing介绍

JavaSwing介绍Swing 是⼀个为Java设计的GUI⼯具包。

Swing是JAVA基础类的⼀部分。

Swing包括了图形⽤户界⾯(GUI)器件如:⽂本框,按钮,分隔窗格和表。

Swing提供许多⽐AWT更好的屏幕显⽰元素。

它们⽤纯Java写成,所以同Java本⾝⼀样可以跨平台运⾏,这⼀点不像AWT。

它们是JFC的⼀部分。

它们⽀持可更换的⾯板和主题(各种操作系统默认的特有主题),然⽽不是真的使⽤原⽣平台提供的设备,⽽是仅仅在表⾯上模仿它们。

这意味着你可以在任意平台上使⽤JAVA⽀持的任意⾯板。

轻量级组件的缺点则是执⾏速度较慢,优点就是可以在所有平台上采⽤统⼀的⾏为。

Hello World 程序HelloWorldSwing.java ⽂件代码如下:1import javax.swing.*;2public class HelloWorldSwing {3/**{4 * 创建并显⽰GUI。

出于线程安全的考虑,5 * 这个⽅法在事件调⽤线程中调⽤。

6*/7private static void createAndShowGUI() {8// 确保⼀个漂亮的外观风格9 JFrame.setDefaultLookAndFeelDecorated(true);1011// 创建及设置窗⼝12 JFrame frame = new JFrame("HelloWorldSwing");13 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);1415// 添加 "Hello World" 标签16 JLabel label = new JLabel("Hello World");17 frame.getContentPane().add(label);1819// 显⽰窗⼝20 frame.pack();21 frame.setVisible(true);22 }2324public static void main(String[] args) {25// 显⽰应⽤ GUI26 javax.swing.SwingUtilities.invokeLater(new Runnable() {27public void run() {28 createAndShowGUI();29 }30 });31 }32 }执⾏以下命令输出结果:$ javac HelloWorldSwing.java$ java HelloWorldSwing⼀个⽤户登录框实例SwingLoginExample.java ⽂件代码如下:1import javax.swing.JButton;2import javax.swing.JFrame;3import javax.swing.JLabel;4import javax.swing.JPanel;5import javax.swing.JPasswordField;6import javax.swing.JTextField;7public class SwingLoginExample {89public static void main(String[] args) {10// 创建 JFrame 实例11 JFrame frame = new JFrame("Login Example");12// Setting the width and height of frame13 frame.setSize(350, 200);14 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);1516/* 创建⾯板,这个类似于 HTML 的 div 标签17 * 我们可以创建多个⾯板并在 JFrame 中指定位置18 * ⾯板中我们可以添加⽂本字段,按钮及其他组件。

java_swing_入门教程

java_swing_入门教程

Swing 甚至走得更远一步,在基本的UI 原则之上又放上了一个公共的设计模式。

这个设计模式叫做模型-视图-控制器(Model-View-Controller,MVC),它试图“把角色分开”。

MVC 让负责显示的代码、处理数据的代码、对交互进行响应并驱动变化的代码彼此分离。

JComponentSwing 的整个可视组件库的基础构造块是JComponent。

它是所有组件的父类。

它是一个抽象类,所以不能创建JComponent,但是作为类层次结构的结果,从字面意义来说它包含了数百个函数,Swing 中的每个组件都可以使用这些函数。

显然,有些概念要比其他概念重要,所以对于本教程,需要学习的重要的东西是:∙JComponent 不仅是Swing 组件的基类,还是定制组件的基类(有关的更多信息在“中级Swing”教程中)。

∙它为所有组件提供了绘制的基础架构——一些方便进行组件定制的东西(同样,在“中级Swing”中,有关于这个主题的更多信息)。

∙它知道如何处理所有的键盘按键。

所以类只需要侦听特定的键。

∙它包含add() 方法,可以添加其他JComponent。

换种方式来看,可以把任意Swing 组件添加到其他任何Swing 组件,从而构造嵌套组件(例如,JPanel 包含JButton,甚至包含一些古怪的组合,例如JMenu 包含JButton)。

简单的swing小部件Swing 库中最基础的组件是JLabel。

它所做的正是您所期望的:呆在那儿,看起来很漂亮,描述其他组件。

下图显示了的JLabel 实际应用:JLabel不太吸引人,但是仍然有用。

实际上,在整个应用程序中,不仅把JLabel 用作文本描述,还将它用作图片描述。

每当在Swing 应用程序中看到图片的时候,它就有可能是JLabel。

JLabel 对于Swing 初学者来说没有许多意料之外的方法。

基本的方法包括设置文本、图片、对齐以及标签描述的其他组件:∙get/setText():获取/设置标签的文本。

Java Swing中的JTree模型

Java Swing中的JTree模型

Java Swing中的JTree模型本文介绍Java Swing中的JTree模型,介绍如何创建、修改、遍历,设置树。

参考Core Java2相关章节及其源代码。

Swing树使用人们所熟悉的文件夹和树叶图来显示分层的数据。

树由节点组成,节点可以是文件夹,也可以是树叶。

文件夹可以有子节点,除根节点之外的所有节点都只有一个父节点。

空的文件夹与树叶的不同之处就在于它允许有子节点。

除父节点和子节点外,树的节点还有一个用户对象(当使用DefaultTreeModel时就会呈现一个用户对象)。

用户对象是Object类型,因此它提供了一个将任意对象与节点相关联的办法。

树有一个简单的模型,每一个JTree实例都要维护对绘制器和编辑器的引用,这个绘制器和编辑器被树中所有的节点所使用。

表1中列出了swing.tree包中的主要类。

表1 Swing.tree包中的主要类名称实现DefaultMutableTreeNode 一个具有一个父节点、(可能)许多子节点和一个用户对象的可变节点,为相关联的节点提供了访问方法。

如果没有任何子节点,这个节点就是树叶。

DefaultTreeModel 一个激发TreeModel Events事件的简单可变的模型。

提供对子节点的访问方法,但不是提供对父节点的访问方法。

DefaultTreeCellEditor 绘制器和编辑器的包装器,它把一个“真正”的编辑器组件放在节点图标的旁边。

DefaultTreeCellRenderer 具有字体、颜色和图标访问方法的JLabel扩展,它提供图标的缺省值。

TreePath 由一个节点到另一个节点的路径。

路径中的节点存储在一个数组中。

路径用于在选取内容之间进行通信。

1.构建树模型详细代码见SimpleTree.javaDefaultMutableTreeNode root = new DefaultMutableTreeNode("World"); DefaultMutableTreeNode country = new DefaultMutableTreeNode("USA");root.add(country);。

swing jxtreetable用法

swing jxtreetable用法

swing jxtreetable用法Swing JXTreeTable是基于Java Swing的扩展组件,提供了一个带有树形结构的表格控件。

JXTreeTable具有JTable的所有功能以及额外的树形结构功能,可以同时展示表格和树状结构的数据。

本文将详细介绍JXTreeTable的用法,包括创建和初始化、添加数据、自定义表格和树状结构、以及其他常用操作等。

1. 创建和初始化JXTreeTable首先,创建一个JXTreeTable实例需要导入相应的包和类。

JXTreeTable位于swingx包中,可通过以下代码导入:import org.jdesktop.swingx.JXTreeTable;然后,可以通过构造函数创建JXTreeTable实例:JXTreeTable treeTable = new JXTreeTable();如果需要传递表格数据模型和树状结构数据模型,可以使用以下构造函数:TreeTableModel treeT ableModel = new MyTreeTableModel(root); 自定义树状结构数据模型TableModel tableModel = new DefaultTableModel(data, columnNames); 表格数据模型JXTreeTable treeTable = new JXTreeTable(treeTableModel, tableModel);在创建JXTreeTable实例后,可以通过以下代码设置表格的可见行数和列数:treeTable.setVisibleRowCount(10); 可见行数为10treeTable.setVisibleColumnCount(5); 可见列数为52. 添加数据添加数据到JXTreeTable可以使用默认的TableModel类或者自定义的TableModel类。

如果使用默认的TableModel类,可以使用以下代码添加行数据:DefaultTableModel model = (DefaultTableModel)treeTable.getTableModel();model.addRow(new Object[] { "Data 1", "Data 2", "Data 3" });如果需要添加树状结构的数据,可以使用以下代码:TreeTableModel treeModel = (TreeTableModel)treeTable.getTreeTableModel();treeModel.insertNodeInto(node, parent, index);其中,node是要插入的节点,parent是父节点,index是要插入的位置。

java swing常用的9种组件

java swing常用的9种组件

在Java1.0中,已经有一个用于GUI编程的类库AWT(Abstract Window Toolkit),称之为抽象窗口工具箱。

遗憾的是,AWT中的组件(例如按钮,类名为Button)在实现中使用了本地代码(Native Code),这些组件的创建和行为是由应用程序所在平台上的本地GUI工具来处理的。

因此,AWT组件要在不同的平台上提供给用户一致的行为就受到了很大的限制。

同时,AWT组件中还存在很多bug,这就使得使用AWT来开发跨平台的GUI应用程序困难重重。

1996年,SUN公司和Netsacpe公司在一个称为Swing的项目中合作完善了Netsacpe公司原来开发的一套GUI库,也就是现在所谓的Swing组件。

Swing组件和原来的AWT组件完全不同,最大的区别就是Swing组件的实现中没有使用本地代码,这样对底层平台的依赖型就大为降低,并且可以给不同平台的用户一致的感觉。

此外,和原来的AWT相比,Swing 中提供了内容更多、使用更为方便的组件。

在阅读一些书籍时,常会遇到名词JFC(Java Foundation Class)。

JFC的概念是在1997年的JavaOne开发者大会上首次提出的,是指用于构建GUI的一组API。

实际上,Swing只是JFC的一部分,其它的还有二维图形(Java 2D)API以及拖放(Drag and Drop)API等等。

Swing并不是完全取代了AWT,Swing只是使用更好的GUI组件(如JButton)代替AWT 中相应的GUI组件(如Button),并且增加了一些AWT中原来所没有的GUI组件。

并且,Swing 仍使用AWT 1.1的事件处理模型。

虽然现在AWT组件仍得到支持,但是建议在你的应用程序中尽量使用Swing组件和1.1的事件模型。

1.标签(JLabel)标签(JLabel)通常是用来标识另外一个组件的含义。

以在标签上显示文字、图象或是文字图象的组合。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十三章 补充— 补充—表格和树
Version 3.0
襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
回顾
Swing 菜单由 JMenubar、JMenuitem 和 、 JMenu 组成 的实例可生成菜单。 创建 JMenuBar 的实例可生成菜单。 JPopupMenu 可显示在屏幕的任何地方 JCheckBoxMenuItem 和 JRadioButtonMenuItem 用于实现菜单栏中的 复选框和单选按钮 JOptionPane 类用于显示对话框
• • • • • 运行该工程 此时创建的表无表头 要显示表头,请单击“ 要显示表头,请单击“Design”选项卡 选项卡 选定该表, 选定该表,右击其中的表头属性 单击关联菜单中的“ 单击关联菜单中的“Expose as Class level variable” 选项 • 此时将显示表头 • 运行该工程 • 为表头设置属性
18 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
步骤
5、将枝节点添加至根节点 、
根结点对象名.add(枝节点 root.add(parent); 枝节点) 根结点对象名 枝节点 6、初始化树实例(构造树对象) 初始化树实例(构造树对象) JTree jtree1=new JTree(root);
6 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
JT new JTable(cells,columns); 使用二维对象数组来传递构造函数 以填充 JTable 实例
7 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
JTable 9-7
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={"课程名称","课程编号","学费(元)"};
第三个构造方法接收一个 TreeNode 对象。该对象本身可以是 JTree 组件,也可以是DefaultMutableTreeNode 类的对象。用户可以使用 DefaultMutableTreeNode 对象来实现自定义的JTree
17 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
襄樊软件学院 你的潜力,我们的动力!
JTable 9-9
• 以下代码将在“Source”选项卡中自动生成 以下代码将在“ 选项卡中自动生成
package tabledemo; private void jbInit() throws Exception { import java.awt.BorderLayout; contentPane = (JPanel) getContentPane(); import java.awt.Dimension; contentPane.setLayout(null); String[] colnames={"课程名称","课程编号","学费(元)"}; import javax.swing.JFrame; setSize(new= new JTable(cells, colnames); JTable jTable1 Dimension(400, 300)); import JTable"); setTitle("欢迎使用 javax.swing.JPanel; JTableHeader jTableHeader1 = jTable1.getTableHeader(); import javax.swing.JTable; jTable1.setBackground(Color.yellow); public TableFrame() { import java.awt.*; jTable1.setBorder(null); try { jTable1.setGridColor(Color.black); import javax.swing.*; setDefaultCloseOperation(EXIT_ON_CLOSE); jTable1.setSelectionBackground(Color.orange); jbInit(); import javax.swing.table.JTableHeader; jTable1.setBounds(new Rectangle(11, 29, 251, 161)); } catch (Exceptionclass TableFrame extends JFrame { public exception) { 用户输入代码以添加行和列 jTableHeader1.setBackground(Color.pink); exception.printStackTrace(); JPanel contentPane; jTableHeader1.setBounds(new Rectangle(10, 10, 252, 20)); } Object[ ][ ] cells = contentPane.add(jTableHeader1); } { contentPane.add(jTable1); /** {"Java",new Integer(01),new Integer(400)}, }*初始化组件. {"Oracle",new Integer(02),new Integer(500)}, } * {"C#",new Integer(03),new Integer(700)}, * @throws ng.Exception }; */
2 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
本章目标
• 运用 JTable • 运用 JTree
3 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
JTable 9-1
• 以表格方式维护大量数据比以列表方式更 加方便 显示数据并且允许用户对其进行编辑 • 使用 Swing 中的 JTable 类可以创建表
步骤
1、创建根节点 、 DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点 根节点"); 根节点 2、创建枝节点 、 DefaultMutableTreeNode parent = new DefaultMutableTreeNode("书籍 书籍"); 书籍 3、创建叶节点 、 DefaultMutableTreeNode leaf = new DefaultMutableTreeNode("java"); 4、将叶节点添加至枝节点 、 枝节点对象名.add(叶节点 parent.add(leaf); 叶节点); 枝节点对象名 叶节点
13 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
JTree
• 树状图以垂直的分层结构方式描述信息 • Windows 资源管理器或文件管理器用树状结构来描述 文件和文件夹 • 使用 JTree 类可在 Java 中创建这些结构 • 树层次结构中的每一行称为一个节点 • 每个树都有一个根节点,可由这个根节点展开所有节 每个树都有一个根节点, 点 • 节点包含实际的数据 • 需要导入相关的包 需要导入相关的包: Import javax.swing.jtree;
7、将树对象添加至容器 、
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); ...
JTable
对存储数值数据非常有用
它不存储数据,只提供数据的呈现方式
4 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
JTable 9-4
JTable jTable1 = new JTable(); 实例化 JTable 控件后将生成代码
5 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
襄樊软件学院
14
Import javax.swing.tree.*;
你的潜力,我们的动力! 你的潜力,我们的动力!
JTree的节点 JTree的节点
节点 节 点 类 型 节点
节点下不包含节点
节点上不包含节点
节点
节点上下都包含节点
15 襄樊软件学院
你的潜力,我们的动力! 你的潜力,我们的动力!
JTree的缺省构造方法 JTree的缺省构造方法
你的潜力,我们的动力! 你的潜力,我们的动力!
8 襄樊软件学院
设置表头
• JTableHeader 用于设置表头
相关文档
最新文档