public class Newhelper extends AbstractTableModel {
JFrame frame;
JScrollPane background;
JTable table;
student[] stud;
int stum=0;
JMenuItem save;
JMenuItem load;
JMenuItem add;
JMenuItem dele;
JMenuItem upload;
JMenuItem download;
helper help=new helper();
DefaultTableModel model;
void inti()
{
String[] coluname={"Class","No","Name","Math","Phys","Chem","Total","Avg "};
model=new DefaultTableModel(null,coluname){
private static final long serialVersionUID = 302609117566487471L;
public boolean isCellEditable(int rowIndex, int columnIndex)
{
if (columnIndex < 6)
return true;
else
return false;
}
};
frame=new JFrame("学生信息管理");
JMenu file=new JMenu("file");
JMenu edit=new JMenu("edit");
JMenu network=new JMenu("network");
JMenuBar bar=new JMenuBar();
save=new JMenuItem("save");
load=new JMenuItem("load");
add=new JMenuItem("add");
dele=new JMenuItem("delete");
upload=new JMenuItem("upload");
download=new JMenuItem("download");
file.add(save);
file.add(load);
edit.add(add);
edit.add(dele);
network.add(upload);
network.add(download);
bar.add(file);
bar.add(edit);
bar.add(network);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add.addActionListener(new addlistener());
save.addActionListener(new savelistener());
dele.addActionListener(new delelistener());
load.addActionListener(new loadlistener());
upload.addActionListener(new uploadl());
download.addActionListener(new downloadl());
frame.setJMenuBar(bar);
table=new JTable(model);
background=new JScrollPane();
background.add(table);
background.getViewport().add(table);
frame.add(background);
frame.setSize(600, 600);
frame.setVisible(true);
model.addTableModelListener(new tablething());
stud=new student[999];
}
@Override
public int getColumnCount() {
return 0;
}
@Override
public int getRowCount() {
return 0;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return null;
}
private class tablething implements TableModelListener{
@Override
public void tableChanged(TableModelEvent e) {
String[] stu=new String[6];
int x=e.getColumn();
int y=e.getLastRow();
if(e.getType()==TableModelEvent.UPDATE&&x==5)
{
for(int i=0;i<6;i++)
{
stu[i]=(String) model.getValueAt(y, i);
}
stud[y]=new student();
change(stu,y);
model.setValueAt(help.calaver(stud[y]), y, 7);
model.setValueAt(help.calsum(stud[y]), y, 6);
}
}
}
void change(String[] stu,int y)
{
stud[y].setbanji(stu[0]);
stud[y].setname(stu[2]);
stud[y].setnum(Integer.parseInt(stu[1]));
stud[y].setmath(Float.parseFloat(stu[3]));
stud[y].setwuli(Float.parseFloat(stu[4]));
stud[y].sethuaxue(Float.parseFloat(stu[5]));
System.out.println(stud[y].gethuaxue());
}
class delelistener implements ActionListener{
@Override
public void actionPerformed(ActionEvent arg0) {
stud[model.getRowCount()-1]=null;
model.removeRow(model.getRowCount()-1);
}}
class addlistener implements ActionListener{
@Override
public void actionPerformed(ActionEvent arg0) {
Vector n = null;
model.addRow(n);
}}
class savelistener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
try {
FileOutputStream stream=new FileOutputStream("information.ser");
ObjectOutputStream os=new ObjectOutputStream(stream);
os.writeObject(stud);
os.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
catch (IOException e1) {
e1.printStackTrace();
}
}}
class loadlistener implements ActionListener{
@Override
public void actionPerformed(ActionEvent arg0) {
try {
FileInputStream stream=new FileInputStream("information.ser");
ObjectInputStream os=new ObjectInputStream(stream);
stud=(student[]) os.readObject();
loading();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}}
void loading()
{int lon=0;
for(Object x:stud)
{
if(x!=null)
{lon++;}
else{break;}
}
System.out.println(lon);
for(int i=0;i<lon;i++)
{ Vector v=new Vector();
v.add(stud[i].getbanji());
v.add(stud[i].getnum());
v.add(stud[i].getname());
v.add(stud[i].getmath());
v.add(stud[i].getwuli());
v.add(stud[i].gethuaxue());
v.add(help.calsum(stud[i]));
v.add(help.calaver(stud[i]));
model.addRow(v);
}
}
class uploadl implements ActionListener //上传学生数据
{
@Override
public void actionPerformed(ActionEvent e) {
help.upload(stud);
}}
class downloadl implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e) {
stud=help.download();
loading();
}}
}
DefaultTableModel model;
String[] coluname={"Class","No","Name","Math","Phys","Chem","Total","Avg "};
model=new DefaultTableModel(null,coluname){
public boolean isCellEditable(int rowIndex, int columnIndex)
{
if (columnIndex < 6)
return true;
else
return false;
}
};
table=new JTable(model);
Vector n = null;
model.addRow(n);
model.addTableModelListener(new tablething());
private class tablething implements TableModelListener{
@Override
public void tableChanged(TableModelEvent e) {
String[] stu=new String[6];
int x=e.getColumn();
int y=e.getLastRow();
if(e.getType()==TableModelEvent.UPDATE&&x==5)
{
for(int i=0;i<6;i++)
{
stu[i]=(String) model.getValueAt(y, i);
}
stud[y]=new student();
change(stu,y);
model.setValueAt(help.calaver(stud[y]), y, 7);
model.setValueAt(help.calsum(stud[y]), y, 6);
}
![JTable的监听](https://img-blog.csdn.net/20170320163131363?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTWFydGluV28=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)