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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。