这段时间由于电脑坏了,好久没有更新博客。本来是昨天把这段时间的学习笔记以及项目开发后的小成果发于博客中的,由于临时有事,迟到了今天才发。下面我用xmind思维导图软件制作了我这段时间和今后学习路线总框图:
Java路线图
对JTable 在api文档中解释是:用来显示和编辑规则的二维单元表。
也就是说JTable的类型定义决定了它是一个规则的二维单元表,但是对于二维单元表内单元格的显示和编辑组件的选择又是极其灵活的.
有如下两个接口:
TableCellEditor
Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column);
TableCellRenderer
Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
所有实现这两个接口的对象都可以配置到JTable.JTable自身定义了单元格的状态:表现或编辑.
当JTabel处于表现状态时它会调用
ableCellRenderer的Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)请求表现组件.
当JTabel处于编辑状态时它会调用TableCellEditor的Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column);请求编辑组件.
这样我们实现TableCellEditor,TableCellRenderer这两个接口就可以灵活的控制表格单元格的编辑和显示.
其实swing已经定义了这两个接口的默认实现,如DefaultCellEditor,DefaultTableCellRenderer.
进销存储项目表单部分代码:
1 import java.awt.CardLayout; 2 import java.awt.event.ActionEvent; 3 import java.awt.event.ActionListener; 4 import javax.swing.*; 5 ; 6 7 /** 8 * 9 * @author Administrator采购主窗体
10 */ 11 class zhuchuanti extends JFrame implements ActionListener{ 12 private static final long serialVersionUID = 1L; 13 JMenuBar jmbn=new JMenuBar(); 14 JMenu jmn1=new JMenu("用户管理"); 15 JMenu chengji=new JMenu("采购管理"); 16 JMenu jmn2=new JMenu("销售管理"); 17 JMenu jmn3=new JMenu("库存管理"); 18 JMenu jmn4=new JMenu("其他"); 19 20 JMenuItem jmn11=new JMenuItem("会员资料"); 21 22 JMenuItem jmn12=new JMenuItem("供应商资料"); 23 24 JMenuItem jmn13=new JMenuItem("服装资料"); 25 26 27 JMenuItem chengji1=new JMenuItem("采购单添加"); 28 JMenuItem chengji5=new JMenuItem("采购单修改"); 29 JMenuItem chengji3=new JMenuItem("采购单删除"); 30 JMenuItem chengji2=new JMenuItem("采购单查询"); 31 JMenuItem chengji4=new JMenuItem("采购单统计"); 32 JMenuItem xs1=new JMenuItem("销售单添加"); 33 JMenuItem xs6=new JMenuItem("销售单修改"); 34 JMenuItem xs2=new JMenuItem("销售单删除"); 35 JMenuItem xs3=new JMenuItem("销售单查询"); 36 JMenuItem xs4=new JMenuItem("销售统计"); 37 38 39 JMenuItem jmn21=new JMenuItem("库存查询"); 40 JMenuItem jmn22=new JMenuItem("库存统计"); 41 42 JMenuItem jmn31=new JMenuItem("退出"); 43 44 45 JLabel lbBg = new JLabel(); 46 public zhuchuanti() { 47 super("服装零售店进销存管理系统");//文本框名字 48 lbBg = new JLabel(new ImageIcon("xp.JPG")); 49 lbBg.setBounds(0, 0, 560, 560); 50 this.add(lbBg); 51 this.setLayout(new CardLayout()); 52 this.setJMenuBar(jmbn); 53 jmbn.add(jmn1); 54 jmbn.add(chengji); 55 jmbn.add(jmn2); 56 jmbn.add(jmn3); 57 jmbn.add(jmn4); 58 chengji.add(chengji1); 59 chengji1.addActionListener(this); 60 chengji.add(chengji2); 61 chengji2.addActionListener(this); 62 chengji.add(chengji3); 63 chengji3.addActionListener(this); 64 chengji.add(chengji4); 65 chengji4.addActionListener(this); 66 chengji.add(chengji5); 67 chengji5.addActionListener(this); 68 69 jmn1.add(jmn11); 70 jmn11.addActionListener(this); 71 72 jmn1.add(jmn12); 73 jmn12.addActionListener(this); 74 jmn1.add(jmn13); 75 jmn13.addActionListener(this); 76 jmn2.add(xs1); 77 xs1.addActionListener(this); 78 jmn2.add(xs2); 79 xs2.addActionListener(this); 80 81 jmn2.add(xs3); 82 xs3.addActionListener(this); 83 jmn2.add(xs4); 84 xs4.addActionListener(this); 85 86 jmn2.add(xs6); 87 xs6.addActionListener(this); 88 jmn3.add(jmn21); 89 jmn21.addActionListener(this); 90 jmn3.add(jmn22); 91 jmn22.addActionListener(this); 92 93 jmn4.add(jmn31); 94 jmn31.addActionListener(this); 95 this.setBounds(10,10,500,450); 96 this.setVisible(true); 97 } 98 99 public void actionPerformed(ActionEvent e) { 100 if(e.getSource()==jmn11){ 101 new kehuzl(); 102 103 } 104 105 if(e.getSource()==jmn12){ 106 new gyshangziliao(); 107 108 } 109 110 if(e.getSource()==jmn21){ 111 new kucunchaxun(); 112 } 113 114 if(e.getSource()==jmn22){ 115 try { 116 new kucuntj(); 117 } catch (Exception e1) { 118 // TODO Auto-generated catch block 119 e1.printStackTrace(); 120 } 121 } 122 123 if(e.getSource()==jmn13){ 124 new spziliao(); 125 } 126 if(e.getSource()==chengji1){ 127 new caigoudan(); 128 } 129 if(e.getSource()==chengji2){ 130 new caigouchaxun(); 131 } 132 if(e.getSource()==chengji3){ 133 new deletecaigou(); 134 } 135 if(e.getSource()==chengji4){ 136 try { 137 new caigoutji(); 138 } catch (Exception e1) { 139 // TODO Auto-generated catch block 140 e1.printStackTrace(); 141 } 142 } 143 if(e.getSource()==chengji5){ 144 new setcaigd(); 145 } 146 if(e.getSource()==xs1){ 147 new xiaoshoudan(); 148 } 149 if(e.getSource()==xs2){ 150 new deletexiaoshoudan(); 151 } 152 if(e.getSource()==xs3){ 153 new xiaoshouchaxun(); 154 } 155 if(e.getSource()==xs4){ 156 try { 157 new xiaoshoutji(); 158 } catch (Exception e1) { 159 // TODO Auto-generated catch block 160 e1.printStackTrace(); 161 } 162 } 163 164 if(e.getSource()==xs6){ 165 new setxiaoshoud(); 166 } 167 if(e.getSource()==jmn31){ 168 this.setVisible(false); //退出 169 }
} 176 177 178 public static void main(String arg[]){ 179 zhuchuanti std=new zhuchuanti(); 180 std.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 181 182 } 183 184 }
import javax.swing.*;
import javax.swing.table.*;
import java.util.*;
import java.sql.*;
//销售统计表单类
public class xiaoshoutji {
public JTable table;
public TableModel model;
public DefaultTableModel defaultModel;//表格的默认模型
Object[][] data;
Object[] cloumsName;
public JFrame jf;
public JScrollPane js;
Statement stmt;
Connection conn;
ResultSetMetaData metaData;
public xiaoshoutji() throws Exception {
data = new Object[1000][4];
cloumsName =new Object[]{"销售单号", "销售件数" ,"销售利润"};
jf = new JFrame("销售统计");
js = new JScrollPane();
defaultModel = new DefaultTableModel(data, cloumsName);
table = new JTable(defaultModel);
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection("jdbc:odbc:student");
Statement stmt=conn.createStatement();//提交查询
String sql="SELECT 销售单号,销售件数,销售利润 FROM 销售单表 ";
ResultSet rs=stmt.executeQuery(sql);//取得查询结果
metaData = rs.getMetaData();
while(rs.next()) {
while(rs.getRow()!= -1) {
for(int j=0; j<metaData.getColumnCount(); j++) {
int k = j;
table.setValueAt(rs.getObject("销售单号"), rs.getRow(), k);
table.setValueAt(rs.getObject("销售件数"), rs.getRow(), k+1);
table.setValueAt(rs.getObject("销售利润"), rs.getRow(), k+2);
break;
}
break;
}
}
conn.close();
stmt.close();
js.getViewport().add(table);
jf.add(js);
jf.setSize(400, 300);
jf.setVisible(true);
}
}