Java表格JTable代码实例解析
代码如下:
importjavax.swing.JTable;
importjavax.swing.table.AbstractTableModel;
importjavax.swing.JScrollPane;
importjavax.swing.JFrame;
importjavax.swing.JOptionPane;
importjava.awt.*;
importjava.awt.event.*;
publicclassJTableDemoextendsJFrame{
privatebooleanDEBUG=true;
publicJTableDemo(){//实现构造方法
super("RecorderOfWorkers");//首先调用父类JFrame的构造方法生成一个窗口
MyTableModelmyModel=newMyTableModel();//myModel存放表格的数据
JTabletable=newJTable(myModel);//表格对象table的数据来源是myModel对象
table.setPreferredScrollableViewportSize(newDimension(500,70));//表格的显示尺寸
//产生一个带滚动条的面板
JScrollPanescrollPane=newJScrollPane(table);
//将带滚动条的面板添加入窗口中
getContentPane().add(scrollPane,BorderLayout.CENTER);
addWindowListener(newWindowAdapter(){//注册窗口监听器
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
}
//把要显示在表格中的数据存入字符串数组和Object数组中
classMyTableModelextendsAbstractTableModel{
//表格中第一行所要显示的内容存放在字符串数组columnNames中
finalString[]columnNames={"FirstName","Position","Telephone",
"MonthlyPay","Married"};
//表格中各行的内容保存在二维数组data中
finalObject[][]data={
{"Wangdong","Executive","01068790231",newInteger(5000),
newBoolean(false)},
{"LiHong","Secretary","01069785321",newInteger(3500),
newBoolean(true)},
{"LiRui","Manager","01065498732",newInteger(4500),
newBoolean(false)},
{"ZhaoXin","Safeguard","01062796879",newInteger(2000),
newBoolean(true)},
{"ChenLei","Salesman","01063541298",newInteger(4000),
newBoolean(false)}};
//下述方法是重写AbstractTableModel中的方法,其主要用途是被JTable对象调用,以便在表格中正确的显示出来。程序员必须根据采用的数据类型加以恰当实现。
//获得列的数目
publicintgetColumnCount(){
returncolumnNames.length;
}
//获得行的数目
publicintgetRowCount(){
returndata.length;
}
//获得某列的名字,而目前各列的名字保存在字符串数组columnNames中
publicStringgetColumnName(intcol){
returncolumnNames[col];
}
//获得某行某列的数据,而数据保存在对象数组data中
publicObjectgetValueAt(introw,intcol){
returndata[row][col];
}
//判断每个单元格的类型
publicClassgetColumnClass(intc){
returngetValueAt(0,c).getClass();
}
//将表格声明为可编辑的
publicbooleanisCellEditable(introw,intcol){
if(col<2){
returnfalse;
}else{
returntrue;
}
}
//改变某个数据的值
publicvoidsetValueAt(Objectvalue,introw,intcol){
if(DEBUG){
System.out.println("Settingvalueat"+row+","+col
+"to"+value+"(aninstanceof"
+value.getClass()+")");
}
if(data[0][col]instanceofInteger&&!(valueinstanceofInteger)){
try{
data[row][col]=newInteger(value.toString());
fireTableCellUpdated(row,col);
}catch(NumberFormatExceptione){
JOptionPane.showMessageDialog(JTableDemo.this,"The\""
+getColumnName(col)
+"\"columnacceptsonlyintegervalues.");
}
}else{
data[row][col]=value;
fireTableCellUpdated(row,col);
}
if(DEBUG){
System.out.println("Newvalueofdata:");
printDebugData();
}
}
privatevoidprintDebugData(){
intnumRows=getRowCount();
intnumCols=getColumnCount();
for(inti=0;i
代码运行效果截图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。