本文主要是介绍Swing之JTable篇采用模板形式控制表格,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
开发中我们经常会用模板来初始化表,这样可以在初始化的时候控制表格内容。还可以重写表模板中的方法来对表做控制。此抽象类为 TableModel 接口中的大多数方法提供默认实现。它负责管理侦听器,并为生成 TableModelEvents 以及将其调度到侦听器提供方便。要创建一个具体的 TableModel 作为 AbstractTableModel 的子类,只需提供对以下三个方法的实现:
public int getRowCount();
public int getColumnCount();
public Object getValueAt(int row, int column);
实现AbstractTableModel接口对表模板做控制。
选中表单元格后,单击按钮对单元格数据做+1操作
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel; public class SetValueAtToSetValue extends JFrame { public SetValueAtToSetValue() { final AbstractTableModel model = new MyModel(); final JTable table = new JTable(model); getContentPane().add(new JScrollPane(table), BorderLayout.CENTER); model.setValueAt(new Integer(1), 0, 0); JButton button = new JButton("Increment selected cell"); getContentPane().add(button, BorderLayout.SOUTH); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int row = table.getSelectedRow(); if(row >0) { int column = table.convertColumnIndexToModel(table.getSelectedColumn()); int currentValue = ((Integer) model.getValueAt(row, column)).intValue(); model.setValueAt(new Integer(currentValue + 1), row, column); } } }); pack(); } public static void main(String arg[]) { SetValueAtToSetValue ex2 = new SetValueAtToSetValue(); ex2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ex2.setVisible(true); }
} class MyModel extends AbstractTableModel { private int[][] table = { new int[3], new int[3], new int[3] }; public MyModel() { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { table[i][j] = i * j; } } } public int getColumnCount() { return table.length; } public int getRowCount() { return table[0].length; } public Object getValueAt(int r, int c) { return new Integer(table[r][c]); } public void setValueAt(Object obj, int r, int c) { table[r][c] = ((Integer) obj).intValue(); fireTableCellUpdated(r, c); }
}
这篇关于Swing之JTable篇采用模板形式控制表格的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!