JTable的使用体现一种MVC的设计模式
main.java
package testtable;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class KCB {
public static void main(String[] args) {
JFrame frame = new JFrame();
JTable table = new JTable(new KCBData()); // 创建JTable示例,传入TableModel
JScrollPane pane = new JScrollPane(table); // 实现滚动
frame.add(pane);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
KCBData.java
/**
* TableModel实现类
*/
package testtable;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
public class KCBData implements TableModel {
private String[] title = {
"周一", "周二", "周三", "周四", "周五",
"周六", "周日",
};
private String[][] data = new String[8][7];
public KCBData() {
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[i].length; j++) {
data[i][j] = "";
}
}
}
@Override
public void addTableModelListener(TableModelListener arg0) {
// TODO Auto-generated method stub
}
@Override
public Class<?> getColumnClass(int arg0) {
// TODO Auto-generated method stub
return String.class;
}
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return 7;
}
@Override
public String getColumnName(int arg0) {
// TODO Auto-generated method stub
return title[arg0];
}
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return 8;
}
@Override
public Object getValueAt(int arg0, int arg1) {
// TODO Auto-generated method stub
return data[arg0][arg1];
}
@Override
public boolean isCellEditable(int arg0, int arg1) {
// TODO Auto-generated method stub
return true;
}
@Override
public void removeTableModelListener(TableModelListener arg0) {
// TODO Auto-generated method stub
}
@Override
public void setValueAt(Object arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
data[arg1][arg2] = (String)arg0;
}
}