`
dean_deng
  • 浏览: 18106 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

DefautTableModel构造方法传入vector参数的问题

    博客分类:
  • java
 
阅读更多

 

今天写了一个用DefaultTableModel实现JTable的例子,结果发现在给

DefaultTableModel(Vector data,Vector columnNames)传入参数data时,

如果直接加普通对象(非Vecto类型的对象)

加入现有的data中,接着就将当前的这个data加入

DefaultTableModel(Vector data,Vector columnNames)构造方法中

会报类型强制转换的异常或者是内存溢出的错误

所以要想给DefaultTableModel(Vector data,Vector columnNames)

传入Vector类型的data,这个data必须里面添加的必须是一个Vector类型的数据

下面的代码中如果我们直接将"1","2",..直接加入data,使用这样的data构造DefaultTableModel

就会产生上面的错误。

因此下面的代码我们先使用了一个Vector类型的rowData添加非Vector类型的普通对象

接着将rowData加Vector类型的data中,最后才将封装了Vector类型的data加入DefaultTableModel中

package test;

import javax.swing.table.DefaultTableModel;

import java.util.Vector;

 

import javax.swing.JButton;

import javax.swing.JPanel;

import javax.swing.JTable;

import javax.swing.JScrollPane;

import javax.swing.JFrame;

 

import java.awt.BorderLayout;

import java.awt.Container;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class JTableUpdate implements ActionListener{

private DefaultTableModel tableModel = null;

private JTable table = null;

private JScrollPane scrollPane = null;

private Vector rowData = null;

private Vector columnNames = null;

private Vector data = null;

private JButton button = null;

private JPanel panel = new JPanel();

private JPanel panel2 = new JPanel();

JFrame frame = null;

Container contentPane = null;

public JTableUpdate(){

//设置表头字段名称

columnNames = new Vector();

for(int i=0;i<4;i++){

columnNames.add("第" +(i+1) + "列");

}

rowData = new Vector();

data = new Vector();

//开始表中的数据是1,2,3,4

rowData.add("1");

rowData.add("2");

rowData.add("3");

rowData.add("4");

data.add(rowData);

//使用DefaultTableModel构建表格

tableModel = new DefaultTableModel(data,columnNames);

table = new JTable(tableModel);

scrollPane = new JScrollPane(table);

frame = new JFrame("JTableUpdate");

 

button = new JButton("更新数据");

button.addActionListener(this);

panel.add(button);

//把带按钮的panel和带表格的scrollPane加到panel2中

panel2.add(panel);

panel2.add(scrollPane);

contentPane = frame.getContentPane();

//添加有更新按钮和表格进入contentPane

contentPane.add(panel2);

frame.pack();

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public static void main(String[] args){

new JTableUpdate();

}

 

@Override

//点击更新按钮后,就更新表中数据

public void actionPerformed(ActionEvent arg0) {

// TODO Auto-generated method stub

//清空vector中的数据

rowData.clear();

data.clear();

//假设要更新的数据是5,6,7,8

rowData.add("5");

rowData.add("6");

rowData.add("7");

rowData.add("8");

data.add(rowData);

//使用DefaultTableModel设置表格

tableModel.setDataVector(data, columnNames);

table.setModel(tableModel);

//更新UI

panel2.updateUI();

}

}

分享到:
评论

相关推荐

    构造方法JAVA构造方法

    - **通过`new`关键字**:创建新对象时,我们使用`new`关键字后面跟着类名和括号,括号内可以传递构造方法所需的参数。 - **通过子类的构造器**:子类在构造过程中,可以使用`super()`调用父类的构造方法,确保父类的...

    java 构造方法的资源

    当我们需要在创建对象时传入特定值来初始化对象,可以定义有参构造方法。例如: ```java public class Person { private String name; private int age; public Person(String name, int age) { // 有参构造...

    java中带有不同构造方法的程序内存分析

    带参数的构造方法允许我们在创建对象时传入特定的值,这些值可以用来定制对象的状态。例如,如果我们有一个`Person`类,可能需要提供姓名和年龄等信息来初始化一个新的`Person`对象。在这种情况下,我们可能会定义一...

    java构造方法

    解决这个问题的两种方式是:在父类中添加无参构造方法;或者在子类的构造方法中显式调用父类的构造方法(如`super(str);`),并将其放在构造方法的第一行。 **示例3**和**示例4**分别演示了对象初始化的顺序。在...

    QT封装ACTIVEX,支持外部传入参数传入函数,mfc和c#(不熟,没做传入参数)的例子

    虽然本示例未提供MFC中传入参数的例子,但在实际开发中,可以通过继承MFC的CWnd或COleControl类来实现类似功能。 5. **C#不熟悉**:C#是一种现代的面向对象编程语言,广泛用于.NET框架。虽然本项目没有涉及C#的参数...

    Java 构造方法

    - **参数化构造器**:当需要在创建对象时传入特定值来初始化对象时,我们会使用参数化的构造器。 - **构造器链**:通过使用`this`关键字,一个构造器可以调用同一类中的另一个构造器,以简化代码并避免重复。 - **...

    Java构造方法解析.zip

    构造方法可以有参数,这样我们就可以根据传入的参数来定制对象的状态。例如: ```java public class Person { private String name; private int age; public Person() { // 默认构造方法 name = "Unknown"; ...

    C#MVC实现带参数的构造注入

    在C# MVC中,我们可以通过Castle Windsor来实现在控制器中带有参数的构造函数注入。 首先,我们需要了解什么是依赖注入。依赖注入是一种设计模式,其核心思想是将依赖关系从代码中解耦出来,使得组件之间可以独立地...

    构造方法11_2.zip

    - 如果程序员没有显式定义构造方法,Java编译器会为每个类提供一个无参数的默认构造方法。 - 默认构造方法不执行任何操作,只是简单地完成对象的内存分配。 3. **带参数的构造方法**: - 为了在创建对象时传递...

    java 子类构造方法

    和普通方法一样,Java中的构造方法也可以重载,即在同一个类中定义多个具有不同参数列表的构造方法。这样可以为创建对象提供多种初始化方式。例如: ```java class Student { String name; int age; Student() ...

    Java面向对象程序设计构造方法.pptx

    创建对象时,可以通过构造方法传入参数,如下所示: ```java Teacher teacher = new Teacher(); // 使用默认构造方法 teacher.showInfo(); Teacher teacher1 = new Teacher("堂老师"); // 传入姓名,使用有参构造...

    LabVIEW中调用外部EXE并传入参数

    下面将详细解释如何在LabVIEW中调用外部EXE并传入参数,以及在EXE中如何解析这些参数。 1. **使用“运行系统命令”函数**: - 在LabVIEW中,可以使用“运行系统命令”函数(位于“字符串函数”-&gt;“系统”-&gt;“运行...

    Java构造方法.pdf

    一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。构造方法可以重载,以参数的个数、类型、顺序。 使用构造方法的注意事项 ...

    第04章 面向对象(上) 06 构造方法

    无参构造方法通常用于初始化对象的基本状态,而带有参数的构造方法允许在创建对象时传入特定的初始值。这称为构造函数的重载,即在同一个类中定义多个构造方法,每个方法具有不同的参数列表。这样可以根据需要提供...

    Java中构造方法的特点.pdf

    5. **可有多个构造方法**:一个类可以定义多个构造方法,每个构造方法有不同的参数列表,这种现象称为重载(Overloading)。这样做的目的是为了提供不同的方式来创建对象,适应不同的初始化需求。 6. **默认构造器*...

    课堂笔记07(包-构造方法-方法重载-封装-方法参数的传递

    Java虚拟机(JVM)根据传入的参数来决定调用哪个方法,这种方法使得代码更简洁、易读。 封装是面向对象编程的三大特性之一,它是将数据和操作数据的方法绑定在一起,对外隐藏实现细节的过程。在Java中,我们通过...

    java 使用构造方法的重载计算课程的GPA值

    构造方法的重载(Overloading)是面向对象编程的一个重要特性,允许我们在同一个类中定义多个同名但参数列表不同的构造方法。这样可以根据传入的不同参数来执行不同的初始化逻辑。本话题将深入探讨如何使用构造方法...

    Java语言程序设计教学中构造方法的研究.pdf

    Java语言是一种面向对象的编程语言,在面向对象编程中,对象的创建是通过构造方法来实现的。...在教学中,构造方法的研究有助于加深学生对面向对象程序设计的理解,同时提高其解决实际编程问题的能力。

    论构造方法的方法论.zip

    当需要更复杂的初始化逻辑时,可以使用有参构造器,它们可以根据传入参数的不同值来创建不同状态的对象。此外,构造方法还可以链式调用,即一个构造方法调用另一个构造方法,以避免代码重复。 在面向对象设计原则中...

Global site tag (gtag.js) - Google Analytics