package table;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
public class SimpleTableTest extends JFrame {
private static final long serialVersionUID = -4172876583187222326L;
protected JTable table;
public SimpleTableTest() {
Container pane = getContentPane();
pane.setLayout(new BorderLayout());
Button add = new Button("add");
TableValues tv = new TableValues();
table = new JTable(tv);
//ArrayList aa = (ArrayList) table.getModel();
// 设置行高
table.setRowHeight(30);
// 必须把table放入JScrollPane才会有列名出现
JScrollPane jsp = new JScrollPane(table);
pane.add(jsp, BorderLayout.CENTER);
pane.add(add,BorderLayout.SOUTH);
init(add,tv,table);
}
private void init(Button add,final TableValues tv,final JTable table) {
add.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
tv.setValueAt("aaa", 0, 0);
Vector v1 = new Vector();
v1.addElement("lvyuan");
v1.addElement(true);
tv.addRow(v1);
}
});
}
public static void main(String[] args) {
SimpleTableTest stt = new SimpleTableTest();
stt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
stt.setSize(400, 200);
stt.setVisible(true);
}
}
package table;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;
/**
* 注意:一般使用AbstractTableModel创建TableModel的实现,只有少量数据时使用DefaultTableModel,
*/
public class TableValues extends AbstractTableModel {
private static final long serialVersionUID = -8430352919270533604L;
public final static int NAME = 0;
public final static int GENDER = 1;
public final static String[] columnNames = { "姓名", "性别" };
public Object[][] values = { { "Cannel_2020", true }, { "Lucy", false }, { "韩梅", false }, { "李雷", true }, { "Jim", true } };
public int getColumnCount() {
return values[0].length;
}
public int getRowCount() {
return values.length;
}
public Object getValueAt(int rowIndex, int columnIndex) {
return values[rowIndex][columnIndex];
}
/**
* 获取列名
*/
public String getColumnName(int column) {
return columnNames[column];
}
public void setValueAt(Object value, int row, int col) {
values[row][col] = value;
fireTableCellUpdated(row, col);<span style="font-size:18px;color:#FF0000;">//此处更改值后,要用这个方法通知表格,模型中的值已刷新,从而刷新界面。</span>
}
public Vector<String> addRow(Vector<String> rowData) {
// TODO Auto-generated method stub
Vector v = convertToVector(values);
v.addElement(rowData);
fireTableRowsUpdated(5,5);
System.out.println(v);
return v;
}
public boolean isCellEditable(int rowIndex, int columnIndex){
return true;
}
protected Vector convertToVector(Object[][] anArray) {
if (anArray == null) {
return null;
}
Vector v = new Vector(anArray.length);
for (int i=0; i < anArray.length; i++) {
v.addElement(convertToVector(anArray[i]));
}
return v;
}
protected static Vector convertToVector(Object[] anArray) {
if (anArray == null) {
return null;
}
Vector v = new Vector(anArray.length);
for (int i=0; i < anArray.length; i++) {
v.addElement(anArray[i]);
}
return v;
}
}