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();
}
}
}
相关分类