JAVA中DEFAULTTABLEMODEL的用法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JTable table = null;
DefaultTableModel defaultModel = null;
public AddRemoveCells()
{ JFrame f = new JFrame(); String[] name = {"字段 1","字段 2","字段 3","字段 4","字
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Βιβλιοθήκη BaidugetRowCount()-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();
段 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++);
下面是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 {
我们曾提到过DefaultTableModel 类,并说明了此类是继承 AbstractTableModel
抽象类而来,且实现了 getColumnCount(),getRowCount()与 getValueAt()3 个方法。因此在实际的使用上,DefaultTableModel 比 AbstractTableModel 要 来得简单许多,也较常被拿来使用 DefaultTableModel 内部使用 Vector 来使用 表格的数据,若佻所要显示的表格格式是比较单纯的变化,笔者建议使用 DefaultTableModel 类会来得方便也简单许多。若佻所要显示的数据模式非常复 杂, 例如我们所举的成绩表格外加学生选课信息等,像这类的表格通常显示的信息会 因人面异,因此使用 AbstractTableModel 会比较容易设计些。
} }
} 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("增加列");
DefaultTableModel defaultModel = null;
public AddRemoveCells()
{ JFrame f = new JFrame(); String[] name = {"字段 1","字段 2","字段 3","字段 4","字
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Βιβλιοθήκη BaidugetRowCount()-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();
段 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++);
下面是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 {
我们曾提到过DefaultTableModel 类,并说明了此类是继承 AbstractTableModel
抽象类而来,且实现了 getColumnCount(),getRowCount()与 getValueAt()3 个方法。因此在实际的使用上,DefaultTableModel 比 AbstractTableModel 要 来得简单许多,也较常被拿来使用 DefaultTableModel 内部使用 Vector 来使用 表格的数据,若佻所要显示的表格格式是比较单纯的变化,笔者建议使用 DefaultTableModel 类会来得方便也简单许多。若佻所要显示的数据模式非常复 杂, 例如我们所举的成绩表格外加学生选课信息等,像这类的表格通常显示的信息会 因人面异,因此使用 AbstractTableModel 会比较容易设计些。
} }
} 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("增加列");