`
mfhappy
  • 浏览: 38802 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

DefaultTableModel

阅读更多

我们曾提到过DefaultTableModel类,并说明了此类是继承AbstractTableModel抽象类而来,且实现了getColumnCount(),getRowCount()
与getValueAt()3个方法.因此在实际的使用上,DefaultTableModel比AbstractTableModel要来得简单许多,也较常被拿来使用
.DefaultTableModel内部使用Vector来使用表格的数据,若佻所要显示的表格格式是比较单纯的变化,笔者建议使用DefaultTableModel类会
来得方便也简单许多.若佻所要显示的数据模式非常复杂,例如我们所举的成绩表格外加学生选课信息等,像这类的表格通常显示的信息会因
人面异,因此使用AbstractTableModel会比较容易设计些.

下面是DefaultTableModel的构造函数:
DefaultTableModel():建立一个DefaultTableModel,里面没有任何数据.
DefaultTableModel(int numRows,int numColumns):建立一个指定行列数的DefaultTableModel.
DefaultTableModel(Object[][] data,Object[] columnNames):建立一个DefaultTableModel,输入数据格式为Object Array.系统会
自动调用setDataVector()方法来设置数据。
DefaultTableModel(Object[] columnNames,int numRows):建立一个DefaultTableModel,并具有Column Header名称与行数信息。
DefaultTableModel(Vector columnNames,int numRows):建立一个DefaultTableModel,并具有column Header名称与行数信息。
DefaultTableModel(Vector data,Vector columnNames):建立一个DefaultTableModel,输入数据格式为Vector.系统会自动调用
setDataVector()方法来设置数据。

DefaultTableModel类提供相当多好用的方法,如之前我们谈论过的getColumnCount(),getRowCount(),getValueAt(),isCellEditable()
setValueAt()等方法,均可直接使用。且DefaultTableModel也提供了addColumn()与addRow()等方法,可让我们随时增加表格的数据。下
面我们就举一个动态增加表格字段的例子:

import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;

public class AddRemoveCells implements ActionListener
{
JTable table = null;
DefaultTableModel defaultModel = null;

public AddRemoveCells()
{
JFrame f = new JFrame();
String[] name = {"字段 1","字段 2","字段 3","字段 4","字段 5"};
String[][] data = new String[5][5];
int value =1;
for(int i=0; i<data.length; i++)
{
for(int j=0; j<data.length ; j++)
data[j] = String.valueOf(value++);
}

defaultModel = new DefaultTableModel(data,name);
table=new JTable(defaultModel);
table.setPreferredScrollableViewportSize(new Dimension(400, 80));
JScrollPane s = new JScrollPane(table);

JPanel panel = new JPanel();
JButton b = new JButton("增加行");
panel.add(b);
b.addActionListener(this);
b = new JButton("增加列");
panel.add(b);
b.addActionListener(this);
b = new JButton("删除行");
panel.add(b);
b.addActionListener(this);
b = new JButton("删除列");
panel.add(b);
b.addActionListener(this);

Container contentPane = f.getContentPane();
contentPane.add(panel, BorderLayout.NORTH);
contentPane.add(s, BorderLayout.CENTER);

f.setTitle("AddRemoveCells");
f.pack();
f.setVisible(true);

f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
/*要删除列必须使用TableColumnModel界面定义的removeColumn()方法。因此我闪先由JTable类的getColumnModel()方法取得
*TableColumnModel对象,再由TableColumnModel的getColumn()方法取得要删除列的TableColumn.此TableColumn对象当作是
*removeColumn()的参数。删除此列完毕后必须重新设置列数,也就是使用DefaultTableModel的setColumnCount()方法来设置。
*/
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("增加列"))
defaultModel.addColumn("增加列");
if(e.getActionCommand().equals("增加行"))
defaultModel.addRow(new Vector());
if(e.getActionCommand().equals("删除列"))
{
int columncount = defaultModel.getColumnCount()-1;
if(columncount >= 0)//若columncount<0代表已经没有任何列了。
{
TableColumnModel columnModel = table.getColumnModel();
TableColumn tableColumn = columnModel.getColumn(columncount);
columnModel.removeColumn(tableColumn);
defaultModel.setColumnCount(columncount);
}
}
if(e.getActionCommand().equals("删除行"))
{
int rowcount = defaultModel.getRowCount()-1;//getRowCount返回行数,rowcount<0代表已经没有任何行了。
if(rowcount >= 0)
{
defaultModel.removeRow(rowcount);
defaultModel.setRowCount(rowcount);//删除行比较简单,只要用DefaultTableModel的removeRow()方法即可。删除
//行完毕后必须重新设置列数,也就是使用DefaultTableModel的setRowCount()方法来设置。
}
}
table.revalidate();
}

public static void main(String args[]) {
new AddRemoveCells();
}
}
分享到:
评论

相关推荐

    学会用JScrollPane和Jtable以及table的Defaulttablemodel*

    ### 使用JScrollPane、JTable与DefaultTableModel实现动态表格管理 #### 一、引言 在开发桌面应用程序时,经常会遇到需要展示大量数据的情况,尤其是在进行项目管理或数据分析时。Java Swing提供了一系列强大的...

    Java中DefaultTableModel的用法.pdf

    "Java中DefaultTableModel的用法" DefaultTableModel是Java中一个非常重要的类,它继承自AbstractTableModel抽象类,并实现了getColumnCount()、getRowCount()和getValueAt()三个方法。因此,在实际使用中,...

    swing中JTable的使用

    DefaultTableModel dtm = (DefaultTableModel) tableModel; /* * TableModel是一个接口 没有删除一行的方法 * AbstractTableModel是TableModel的实现类(抽象类) 也没有删除一行的方法 * DefaultTableModel继承...

    实现JTable 数据的添加删除

    DefaultTableModel model = new DefaultTableModel(); JTable table = new JTable(model); // 添加列 model.addColumn("姓名"); model.addColumn("年龄"); // 添加行 model.addRow(new Object[]{"张三", 25...

    jtable增删改查和jtree连接

    DefaultTableModel dtm=new DefaultTableModel(this.tf.data,this.tf.title); this.tf.jTable1.setModel(dtm); } public Vector setVector(){ Vector v=new Vector(); v.add(""); v.add(""); v.add("...

    j2se项目源码及介绍_飞鸽传书

    d) 使用DefaultTableModel定制需要的JTable。 e) 使用SystemTray、TrayIcon制作托盘图标。 四、 类图 a) 类图 b) 类图说明 类名称 IPMsg 类描述 飞鸽传书主程序。 包描述 main 函数描述 public static void main...

    java表格控件JTable常用操作详解.pdf

    DefaultTableModel model = new DefaultTableModel(cellData, headers) {public boolean isCellEditable(int row, int column) { return false; } }; table = new JTable(model);` 这种方式可以创建一个带有表头和...

    Swing JTable 常用属性

    DefaultTableModel model = new DefaultTableModel(cellData, headers) { public boolean isCellEditable(int row, int column) { return false; } }; table = new JTable(model); ``` 二、对表格列的控制 在...

    java JTable用法详解

    DefaultTableModel model = new DefaultTableModel(cellData, headers) { @Override public boolean isCellEditable(int row, int column) { return false; } }; JTable table = new JTable(model); ``` 在...

    JTable常见用法细则.doc

    DefaultTableModel model = new DefaultTableModel(cellData, headers) { @Override public boolean isCellEditable(int row, int column) { return false; } }; JTable table = new JTable(model); ``` - ...

    JAVA中JTable组件详解实例

    DefaultTableModel model = new DefaultTableModel(cellData, headers) { public boolean isCellEditable(int row, int column) { return false; } }; JTable table = new JTable(model); ``` 通过这种方式...

    jtable使用参考

    DefaultTableModel model = new DefaultTableModel(cellData, headers) { public boolean isCellEditable(int row, int column) { return false; // 设置单元格是否可编辑 } }; JTable table = new JTable(model)...

    java中JTable的应用】[参照].pdf

    `JTable`通常与`DefaultTableModel`一起使用,可以在GUI应用程序中展示和编辑数据。以下是对标题和描述中所提及的`JTable`在Java中的应用进行的详细解释: 1. **JTable组件**: `JTable` 是Java Swing中的一个组件...

    JTable应用实例

    在`JTable`应用实例中,`DefaultTableModel`是一个关键的类,它是`javax.swing.table.DefaultTableModel`的实例,负责存储表格的数据和列信息。`DefaultTableModel`提供了添加、删除行和修改数据的基本功能。创建一...

    一个jTable的示例文件.zip

    DefaultTableModel model = new DefaultTableModel(); model.addColumn("姓名"); model.addColumn("年龄"); model.addRow(new Object[]{"张三", 25}); JTable table = new JTable(model); JScrollPane scrollPane = ...

    JTableDemo

    这个程序通常包括创建`DefaultTableModel`、设置列名、加载数据以及将`JTable`添加到`JFrame`中等步骤。 1. **`JTable`介绍**: `JTable`是Java Swing中用于显示二维数据的组件,可以用于展示结构化的数据,如...

    java万年历

    在万年历程序中,`DefaultTableModel dtm = new DefaultTableModel(null, astr);`这行代码创建了一个`DefaultTableModel`实例,并初始化了列标题(星期名称)。之后,`dtm`将被用来填充和更新日历的日期数据。 ####...

    数据库中表的一些操作

    DefaultTableModel tm = new DefaultTableModel(vdata, colnames); jTable1.setModel(tm); ``` 这段代码通过循环向 `Vector` 添加数据,并通过 `DefaultTableModel` 将这些数据填充到 `JTable` 中,创建了包含三列...

    javaJtable经典列设置+表格颜色.doc

    - `DefaultTableModel` 是JTable的默认模型,用于存储和管理表格的数据。 - `JTable` 创建时,使用了 `DefaultTableModel` 实例化,同时设置了表格不可编辑。 3. **设置表格标题和内容**: - 列标题是通过 `...

    JAVA中JTable的使用方法

    DefaultTableModel model = new DefaultTableModel(); JTable table = new JTable(model); ``` 3. **设置列和行** 在`DefaultTableModel`中,可以使用`addColumn()`方法添加列,用`addRow()`方法添加行。数据...

Global site tag (gtag.js) - Google Analytics