2.高级Swing组件JTable应用

合集下载

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)这些构造函数的好处是容易实现,而缺点是:∙他们自动设置每个单元格为可编辑∙数据类型都视为一样的(字符串类型)。

javaswing jlist组件的基本用法

javaswing jlist组件的基本用法

javaswing jlist组件的基本用法JList是JavaSwing库中的一个组件,它用于显示一个列表的数据。

在JavaSwing中,JList允许用户选择列表中的项目。

以下是如何使用JList组件的基本步骤:一、引入必要的库在开始使用JList之前,我们需要引入必要的库。

首先,需要引入JavaSwing库。

可以在项目中直接添加JavaSwing库,或者通过Maven等构建工具添加。

```javaimportjavax.swing.*;```二、创建JList对象创建一个JList对象,需要指定要显示的数据源。

数据源可以是数组、列表或其他集合。

```javaJList<String>list=newJList<>(newString[]{"Item1","Item2","Item3"});```三、设置列表样式可以使用多种方式来设置列表样式,例如背景颜色、字体等。

可以使用以下方法来设置列表样式:```javalist.setBackground(Color.WHITE);//设置背景颜色为白色list.setFont(newFont("Arial",Font.BOLD,14));//设置字体为粗体,大小为14```四、添加到容器中可以将JList对象添加到JFrame、JPanel等容器中,以便将其显示出来。

可以使用以下代码将JList对象添加到容器中:```javaJFrameframe=newJFrame("JListExample");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.add(newJScrollPane(list));//将JList对象添加到滚动面板中,以便查看大列表frame.pack();frame.setVisible(true);```五、使用addListSelectionListener监听器监听列表选择事件可以使用addListSelectionListener方法来监听列表选择事件。

java jtable用法

java jtable用法

java jtable用法JTable是Java Swing库中的一个组件,用于将数据以表格的形式展示出来。

JTable的用法如下:1.创建JTable对象:可以通过传入一个二维数组或者实现TableModel接口的数据模型来创建JTable对象。

2.设置表头:通过调用getTableHeader()方法获取表头对象,并设置表头的标题和样式。

3.设置表格数据:将数据设置到表格中,可以通过调用setModel()方法来设置TableModel,也可以通过调用setValueAt()方法逐个设置表格中的值。

4.设置表格样式:可以通过调用setDefaultRenderer()方法来设置单元格的渲染器,调用setDefaultEditor()方法来设置单元格的编辑器,以及调用setRowHeight()方法来设置行高等。

5.添加JTable到容器中:将JTable添加到容器中显示出来。

拓展:JTable还有一些其他常用的功能,例如:1.表格排序:可以通过调用setAutoCreateRowSorter()方法来开启表格排序功能,或者通过设置RowSorter来自定义排序规则。

2.表格选择:可以通过调用setSelectionMode()方法来设置表格的选择模式,可以选择单个单元格、单个行、多个行等。

3.表格事件:可以监听表格的事件,例如单元格的点击事件、单元格的编辑事件等,通过添加事件监听器来实现相应的逻辑处理。

4.表格导出:可以将表格中的数据导出为Excel、CSV等格式,通过调用相应的API来实现数据导出功能。

总之,JTable是一个非常强大的表格组件,可以用于展示和处理大量的数据,通过灵活的设置和拓展,可以实现各种复杂的表格功能。

java jtable用法

java jtable用法

java jtable用法Java JTable用法一、概述JTable是Java Swing库中的一个控件,用于在图形用户界面中显示和编辑表格数据。

它提供了丰富的功能和灵活的配置选项,使开发人员能够轻松地创建和管理数据表格。

二、创建JTable对象1.构造函数:可以使用JTable的构造函数来创建一个空的表格:JTable table = new JTable();2.数据模型:可以通过设置数据模型来创建一个包含指定数据的表格:String[][] data = {{"John", "Doe"}, {"Jane", "Smith "}, {"Bob", "Johnson"}};String[] columnNames = {"First Name", "Last Name"}; JTable table = new JTable(data, columnNames);三、设置表格属性1.表头:可以使用setTableHeader()方法来设置表格的表头:JTableHeader header = ();();(new Font("Arial", , 16));(header);2.行高:可以使用setRowHeight()方法来设置表格的行高度:(30);3.列宽:可以使用setColumnWidth(int column, int width)方法来设置指定列的宽度:().getColumn(0).setPreferredWidth(100);四、添加行和列1.添加行:可以使用数据模型的addRow(Object[] rowData)方法来添加一行数据:DefaultTableModel model = (DefaultTableModel) (); (new Object[]{"Tom", "Brown"});2.添加列:可以使用数据模型的addColumn(Object columnName)方法来添加一列数据:("Age");五、单元格编辑1.编辑模式:可以使用setCellEditor()方法来设置一个单元格编辑器:DefaultCellEditor editor = new DefaultCellEditor(ne w JTextField());().getColumn(1).setCellEditor(editor);2.单元格监听:可以使用addCellEditorListener()方法来添加一个单元格编辑器监听器:(new CellEditorListener() {@Overridepublic void editingStopped(ChangeEvent e) {// 编辑完成后的处理}@Overridepublic void editingCanceled(ChangeEvent e) {// 编辑取消后的处理}});六、样式和渲染1.颜色:可以使用自定义的继承自DefaultTableCellRenderer的渲染器来设置单元格的前景色和背景色:class MyRenderer extends DefaultTableCellRenderer { public Component getTableCellRendererComponent(JTabl e table, Object value, boolean isSelected, boolean hasFo cus, int row, int column) {Component component = (table, value, isSelected,hasFocus, row, column);if (row % 2 == 0) {();} else {();}return component;}}// 设置渲染器().getColumn(1).setCellRenderer(new MyRenderer());2.字体:可以使用自定义的渲染器来设置单元格的字体:().getColumn(0).setCellRenderer(new DefaultTableCel lRenderer() {public Component getTableCellRendererComponent(JTabl e table, Object value, boolean isSelected, boolean hasFo cus, int row, int column) {Component component = (table, value, isSelected, hasFocus, row, column);(new Font("Arial", , 14));return component;}});以上是Java JTable的一些常用用法和详细讲解。

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是要插入的位置。

javajtable用法

javajtable用法

javajtable用法1. 创建JTable对象:要创建一个JTable对象,可使用其构造函数之一、以下是一个示例:JTable table = new JTable(;2.设置表头:表格的第一行通常称为表头,用于显示列名。

要设置表头,可以使用JTable的getTableHeader(方法和setDefaultRenderer(方法。

下面是一个示例:JTableHeader tableHeader = table.getTableHeader(;tableHeader.setDefaultRenderer(new MyTableHeaderRenderer(); 3.添加到容器:将JTable添加到显示表格的容器中。

例如,将它添加到一个面板中:JPanel panel = new JPanel(;panel.add(table);4.设置数据模型:JTable需要一个数据模型来存储和管理表格数据。

默认情况下,JTable使用DefaultTableModel作为其数据模型。

以下是设置数据模型的示例:DefaultTableModel model = new DefaultTableModel(;table.setModel(model);5.填充表格数据:可以通过添加行和列的方式来填充表格数据。

以下是一个示例:model.addRow(new Object[]{"John Doe", "24", "Male"});model.addRow(new Object[]{"Jane Smith", "30", "Female"}); 6.选择行和列:可以使用JTable的setRowSelectionAllowed(和setColumnSelectionAllowed(方法来允许或禁止行或列的选择。

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)通常是用来标识另外一个组件的含义。

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

Swing-JTable用法-入门

Swing-JTable⽤法-⼊门注:本⽂为学习笔记,原⽂为,本⽂所有素材与代码均源于原⽂,可能会有部分更改。

JTable是Swing中的表格控件,它的外观如下所⽰:没错,excel或者access数据库的编辑区就是JTable这样的控件了。

创建JTableJTable提供了2个构造器可以让你⽤数据和头部直接⽣成它:JTable(Object[][] rowData, Object[] columnNames)JTable(Vector rowData, Vector columnNames)这两个构造器有⼀些特性你必须要注意:1.JTable所有的单元格都是可编辑的;2.它将所有数据都当做string来处理。

本来,JTable可以将布尔型数据⽤⼀个checkBox来进⾏展⽰,就像表1那样,在这⾥就不⾏了。

3.它要求你把所有数据都放到数组或vector中。

如果你的数据来⾃于数据库,那么专门再填充到数组实在是多此⼀举。

呐,如果你不能忍受以上限制,那么就使⽤table Model来管理你的数据吧!创建TableModel如果程序没有显式地指定tableModel,JTable会⾃动⽣成⼀个实例,这样做的副作⽤在上⾯已经说过了。

我们⾃⼰创建tableModel可以让数据得到更好的展⽰,这样做的⽅法是继承。

它已经提供了tableModel接⼝的⼤部分默认实现,在最低限度下,你只需要实现以下三个⽅法:public int getRowCount();public int getColumnCount();public Object getValueAt(int row, int column);当然,如果你的应⽤程序有其他定制化的功能,你可以⾃⼰实现的其它⽅法,⽐如:public Class getColumnClass(int c)//JTable uses this method to determine the default renderer editor for each cellpublic boolean isCellEditable(int row, int col)//Don't need to implement this method unless your table's editablepublic void setValueAt(Object value, int row, int col) //Don't need to implement this method unless your table's data can change.⽰意了如何⾃⼰创建并使⽤tableModel。

Swing中使用JTable动态获取数据库中的数据并显示

Swing中使⽤JTable动态获取数据库中的数据并显⽰笔者注:本⽂供新⼿学习使⽤,若有⼀定基础,可以直接看3!1.创建数据库:/*Navicat MySQL Data TransferSource Server : aaSource Server Version : 50519Source Host : localhost:3306Source Database : testTarget Server Type : MYSQLTarget Server Version : 50519File Encoding : 65001Date: 2017-05-05 20:59:36*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `user`-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(12) DEFAULT NULL,`password` varchar(12) DEFAULT NULL,`sex` char(4) DEFAULT NULL,`age` int(11) DEFAULT NULL,`address` varchar(12) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=9DEFAULT CHARSET=utf8;-- ------------------------------ Records of user-- ----------------------------INSERT INTO `user` VALUES ('1', '李雷', '123', '男', '23', '湖北⼗堰');INSERT INTO `user` VALUES ('2', '韩梅梅', '111', '⼥', '23', '湖北⼗堰');INSERT INTO `user` VALUES ('3', '光头强', '123', '男', '22', '森林');INSERT INTO `user` VALUES ('4', '熊⼤', '111', '雄', '22', '森林');INSERT INTO `user` VALUES ('5', '喜⽺⽺', '111', '雄', '16', '青青草原⽺村');INSERT INTO `user` VALUES ('6', '美⽺⽺', '123', '雌', '16', '青青草原⽺村');INSERT INTO `user` VALUES ('7', '灰太狼', '111', '雄', '18', '青青草原狼堡');INSERT INTO `user` VALUES ('8', '红太郎', '123', '雌', '18', '青青草原狼堡');2.创建项⽬:2.1按照以下格式创建项⽬2.2导⼊mysql链接数据库jar包(jar包下载地址:)2.2.1在项⽬内新建⼀个⽂件夹lib2.2.2将jar包赋值到lib⽬录下,并添加到项⽬中(反键,如图所⽰即可)注:1.DbUtils类主要写JDBC链接数据库代码,代码如下:package com.zjl.db;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class DbUtils {private static final String URL="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8"; private static final String USER="root";private static final String PASSWORD="scme";//此处为数据库密码,更改为⾃⼰数据库的密码static{try {Class.forName("com.mysql.jdbc.Driver");} catch (ClassNotFoundException e) {e.printStackTrace();}}public static Connection getConnection() throws SQLException{return DriverManager.getConnection(URL, USER, PASSWORD);}//关闭⽅法public static void close(ResultSet rs, Statement stat, Connection conn) throws SQLException{if(rs!=null){rs.close();}if(stat!=null){stat.close();}if(conn!=null){conn.close();}}}er类主要是储存数据的实体类,代码如下:package com.zjl.modle;public class User {private int id,age;private String name,password,sex,address;public int getId() {return id;}public void setId(int id) {this.id = id;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) { = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}erDao主要是进⾏数据操作的类,代码如下:package com.zjl.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import com.zjl.db.DbUtils;import er;public class UserDao {private Connection conn=null;private PreparedStatement ps=null;private ResultSet rs=null;//查询所有⽤户public List<User> queryAllUser(){String sql="select * from user";List<User> list=new ArrayList<User>();try {conn=DbUtils.getConnection();ps=conn.prepareStatement(sql);rs=ps.executeQuery();System.out.println(ps.toString());while(rs.next()){User user=new User();user.setId(rs.getInt(1));user.setName(rs.getString(2));user.setPassword(rs.getString(3));user.setSex(rs.getString(4));user.setAge(rs.getInt(5));user.setAddress(rs.getString(6));list.add(user);}} catch (SQLException e) {e.printStackTrace();}return list;}}4.Main类是显⽰数据的窗体类,代码如下:package com.zjl.view;import java.awt.Color;import java.awt.Dimension;import java.awt.EventQueue;import java.awt.Toolkit;import java.util.List;import javax.swing.GroupLayout;import javax.swing.GroupLayout.Alignment;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.border.EmptyBorder;import javax.swing.border.LineBorder;import javax.swing.table.DefaultTableModel;import erDao;import er;public class Main extends JFrame {private JPanel contentPane;private JTable table;private String head[]=null;private Object [][]data=null;private UserDao user=new UserDao();/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {Main frame = new Main();frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/*** Create the frame.*/public Main() {setResizable(false);setTitle("\u673A\u7968\u9884\u8BA2\u7CFB\u7EDF");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 700, 300);Dimension us=this.getSize();Dimension them=Toolkit.getDefaultToolkit().getScreenSize();int x=(them.width-us.width)/2;int y=(them.height-us.height)/2;this.setLocation(x, y);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);JScrollPane scrollPane = new JScrollPane();scrollPane.setBounds(0,0,700,250);table = new JTable();table.setBorder(new LineBorder(new Color(0, 0, 0)));head=new String[] {"id", "姓名", "密码", "性别", "年龄", "住址", "\u7968\u4EF7",};DefaultTableModel tableModel=new DefaultTableModel(queryData(),head){public boolean isCellEditable(int row, int column){return false;}};table.setModel(tableModel);scrollPane.setViewportView(table);GroupLayout gl_contentPane = new GroupLayout(contentPane);gl_contentPane.setHorizontalGroup(gl_contentPane.createParallelGroup(Alignment.LEADING).addComponent(scrollPane, GroupLayout.DEFAULT_SIZE, 684, Short.MAX_VALUE));gl_contentPane.setVerticalGroup(gl_contentPane.createParallelGroup(Alignment.LEADING).addGroup(gl_contentPane.createSequentialGroup().addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 195, GroupLayout.PREFERRED_SIZE).addGap(66)));contentPane.setLayout(gl_contentPane);}//⽣成表格数据/*** @return*/public Object[][] queryData(){List<User> list=user.queryAllUser();data=new Object[list.size()][head.length];for(int i=0;i<list.size();i++){for(int j=0;j<head.length;j++){data[i][0]=list.get(i).getId();data[i][1]=list.get(i).getName();data[i][2]=list.get(i).getPassword();data[i][3]=list.get(i).getSex();data[i][4]=list.get(i).getAge();data[i][5]=list.get(i).getAddress();}}return data;}}3.重点代码回顾:3.1效果展⽰:3.2定义⼀个获取数据的⽅法//⽣成表格数据/*** @return*/public Object[][] queryData(){List<User> list=user.queryAllUser();data=new Object[list.size()][head.length];for(int i=0;i<list.size();i++){for(int j=0;j<head.length;j++){data[i][0]=list.get(i).getId();data[i][1]=list.get(i).getName();data[i][2]=list.get(i).getPassword();data[i][3]=list.get(i).getSex();data[i][4]=list.get(i).getAge();data[i][5]=list.get(i).getAddress();}}return data;}3.3在窗体代码中使⽤DefaultTableModle绑定数据String head[]=new String[] {"id", "姓名", "密码", "性别", "年龄", "住址"};DefaultTableModel tableModel=new DefaultTableModel(queryData(),head);table.setModel(tableModel);//JTable对象设置DefaultTableModle作为⼀个带⼤⼀⾃习的学长,我为他们写下了这篇⽂章,也将这篇⽂章送给所有学习Swing的朋友们!。

java jtable用法(一)

java jtable用法(一)Java JTable的用法JTable简介JTable是Java Swing库中的一个组件,用于显示和编辑表格数据。

它可以按照行和列的形式展示数据,并支持用户交互操作。

在本文中,我们将介绍一些JTable的常见用法和技巧。

创建JTable要创建一个JTable,我们首先需要创建一个TableModel。

TableModel是一个数据模型,用于存储和管理表格中的数据。

以下是创建JTable的步骤:1.创建一个二维数组或者一个实现TableModel接口的自定义类。

2.实例化DefaultTableModel类,并传入之前创建的数据数组或者自定义TableModel类的实例。

3.将DefaultTableModel实例传入JTable的构造方法中,创建JTable对象。

// 创建数据数组Object[][] data = {{"John", 25, "USA"},{"Alice", 30, "Canada"},{"Bob", 35, "UK"}};// 创建列名数组String[] columnNames = {"Name", "Age", "Country"};// 创建DefaultTableModelDefaultTableModel model = new DefaultTableModel(data, co lumnNames);// 创建JTableJTable table = new JTable(model);自定义JTable外观JTable提供了许多方法和属性,用于自定义表格的外观。

下面列举了几个常用的用法:设置表格行高使用方法可以设置表格的行高。

默认情况下,行高是根据表格内容的实际高度自动调整的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三节:高级Swing界面JTable编程
1.JTable与TableModel (2)
1.TableModel与JTable的关系: (2)
2.TableModel实践: (3)
3.使用JTable+TableModel展示java中的数据对象: (4)
2.JTable展示方式的美化: (7)
1.设置表格的宽度和高度: (7)
2.要显示表头: (7)
3.新加列,将列设为下拉框: (8)
4.表格排序: (8)
3. JTable事件响应和项目设想 (9)
4.一个游戏:《java连连看》.................................................................... 错误!未定义书签。

1.需求分析:....................................................................................... 错误!未定义书签。

2.编写TableModel和界面实现:..................................................... 错误!未定义书签。

3.连连看事件监听:........................................................................... 错误!未定义书签。

总结和任务:............................................................................................... 错误!未定义书签。

1.JTable与TableModel
1.TableModel与JTable的关系:
前面,我们己学会在界面上加入一个简单的JTable对象:
JTable table=new JTable(3,5);这段代码即可创建一个三行五列的表格用以显示在界面上;在具体的应用中,我们肯定是要让JTable显示我们自己定义的数据,比如将上例中的UserInfo对象或UserBlog对象显示到表格中,那就必须定制JTable对象所要使用的javax.swing.table.TableModel对象,在开始前,我们先理解javax.swing.table.TableModel 和JTable之间的关系:模特与衣服之间的关系:
JTable对象
简单的说,JTable只是一个界面,主要负责显示功能,但JTable对象具体显示多少行多少列,甚示每行每列中显示什么类型的数据,JTable中的单元格是否可编辑,编辑之后怎么办…关于数据提供和数据操作的实现,都是由这个JTable对象的TableModel对象所负责的;反向而言,当JTable对象界面的数据被改动时,JTable会自动调用自己模型中的方法将改动反映到模型中。

说了这么多,我们来看TableModel到底是什么东东----它是一个接口定义,源码说明如下:
javax.swing.JTable table=new javax.swing.JTable();
table.setModel(new 实现了TableModel接口的类);
就可以在JTable对象在显示时,就会自动调用传入的Model中的方法用以填充自己的单元格的数据。

2.TableModel实践:
使用这个TableModel对象的JTable将显示10行5列,每个单元格将返回getValueAt方法返回的字符串,当我们在使用它的表格界面上编辑表格数据(第一列不可编辑,Model中限定了),就会调用setValue方法将编辑过后的值打印出来。

要让某个JTable对象按照我们自己实现的TableModel显示数据,只需要创建我们实现的TableModel的对象:
MyTableModelV1 tm=new MyTableModelV1();
然后调用JTable对象的setModel方法,传入自定义的TableModel对象即可
3.使用JTable+TableModel展示java中的数据对象:
具体请看示例,将多个UserInfo对象列表的数据显示到JTable中,首先,我们需要编写自己的TableModel类,即实现了javax.swing.table.JtableModel接口的类,这个实现类使用装有UserInfo的List对象,负责将列表中的用户对象信息提供给Jtable对象显示:
示用户数据。

OK,运行程序,看到了吗?
关于JTable和TableModel对象,一定要体会的就是“衣服”和“模特”之间的关系,呵呵;当我们在界面上修改了JTable中的值,模型对象中的方法就会被调用。

但这个JTable看起来一点也不漂亮,表格的标题头也没显示出来,接下来,我们美化一下,现在美化JTable,与模型,即数据模型没关系,就像要改衣服,不用动模特一样:
2.JTable展示方式的美化:
1.设置表格的宽度和高度:
如下代码示例:
2.要显示表头:
要将Jtable放到滚动板(javax.swing.JscrollPane)上,并设定其大小:
效果图如下:
使用如下代码段,:
3.新加列,将列设为下拉框:
代码示例:
效果图如下:
4.表格排序:
3. JTable事件响应和项目设想
JTable事件响应是非常简单,如下代码片断所示,我们可以给表格加上一个鼠标事件监
效果如下图示:
表格某个单元格的值被编辑后,当焦点移出时,表格会自动调用自己的模型的setValueAt 方法,传入改变后的值和行列索引,这个功能也可被利用来做事件响应。

相关文档
最新文档