import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Example10_16 { public static void main(String args[]){ Win win=new Win(); }}class Win extends JFrame implements ActionListener{ JTable table; Object a[][]; Object name[]={"商品名称","单价","销售量","销售额"}; JButton computerRows,computerColums; JTextField inputRowsNumber;//创建一个文本框 int initRows=1; JPanel pSouth,pNorth; JScrollPane js; int count=0,rowsNumber=0; Win(){ computerRows=new JButton("每件商品销售额"); computerColums=new JButton("总销售额"); inputRowsNumber=new JTextField(10); computerRows.addActionListener(this); computerColums.addActionListener(this); pSouth=new JPanel(); pNorth=new JPanel();//默认为FlowLayout布局 pNorth.add(new JLabel("输入表格行数,回车确认")); pNorth.add(inputRowsNumber); pSouth.add(computerRows); pSouth.add(computerColums); js=new JScrollPane(table); add(pSouth,BorderLayout.SOUTH); add(pNorth,BorderLayout.NORTH); add(js,BorderLayout.CENTER); setBounds(100,100,370,250); setVisible(true); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } public void actionPerformed(ActionEvent e){ if(e.getSource()==inputRowsNumber){ count=0; initRows=Integer.parseInt(inputRowsNumber.getText()); a=new Object[initRows][4]; for(int i=0;i<initRows;i++){ for(int j=0;j<4;j++) a[i][j]="0"; } table=new JTable(a,name);//name用于定义表格的列名 table.setRowHeight(20); getContentPane().removeAll();//移除添加的组件因为行数重新定义了,所以先移除,在后面再添加回带有新行数的 js=new JScrollPane(table); add(js,BorderLayout.CENTER); add(pSouth,BorderLayout.SOUTH); add(pNorth,BorderLayout.NORTH); validate(); } else if(e.getSource()==computerRows){ int rows=table.getRowCount(); //获取现有表格的行数 for(int i=0;i<rows;i++){ double sum=1; boolean boo=true; for(int j=1;j<2;j++){ try{sum=sum*Double.parseDouble(a[i][j].toString());} catch(Exception ee){ boo=false; table.repaint();//表格更新显示 } if(boo=true){ a[i][3]=""+sum; //修改数组中的数据 } } } } else if(e.getSource()==computerColums){ if(count==0){ rowsNumber=table.getRowCount(); //获取表格的目前的行数 count++; } else{ rowsNumber=table.getRowCount(); //获取表格的目前的行数 rowsNumber=rowsNumber-1; //不要最后一行 } double totalSum=0; for(int j=0;j<rowsNumber;j++) totalSum=totalSum+Double.parseDouble(a[j][3].toString()); Object b[][]=new Object[rowsNumber+1][4]; //比数组a多一行的数组 for(int i=0;i<rowsNumber;i++){ //将数组a的数据复制到数组b中 for(int j=0;j<4;j++) b[i][j]=a[i][j]; } b[rowsNumber][0]="一共有"+rowsNumber+"件商品"; b[rowsNumber][3]="总销售额:"+totalSum; a=b; //重新初始化a table=new JTable(a,name); getContentPane().removeAll(); //移除所有添加组件方便修改表 add(new JScrollPane(table),BorderLayout.CENTER); add(pSouth,BorderLayout.SOUTH); add(pNorth,BorderLayout.NORTH); validate(); } }}
添加回答
举报
0/150
提交
取消