问答题
请完成下列Java程序:用Swing实现一个简单的学生成绩管理器,显示出学生的姓名、Java成绩、C++成绩和这两门课的平均成绩,学生一共有4个人(Mike,Jack等)。要求可以修改学生的姓名和成绩,并且能够直接计算出平均成绩,如改变Mike的java成绩后,在平均成绩栏会自动更新为新的平均成绩。
注意:请勿改动main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。
源程序文件清单如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.TableModel;
public class ex03_2 extends JFrame
{
private JTable jt;
private String[][] strData;
public static void main(String[] args)
{
ex03_2 obj03_2=new ex03_2();
obj03_2.pack();
obj03_2.setVisible(true);
}
public ex03_2()
{
String[]columnNames={"name","java","C++","average"};
strData=new String[][]{
{"Mike","70.0","80.0","75.0"},
{"Jack","70.0","100.0","85.0"},
{"David","75.0","95.0","85.0"},
{"Tom","60.0","80.0","70.0"}
};
jt=new JTable(strData,columnNames);
jt.setPreferredScrollableViewportSize(new Dimension(400,200));
JScrollPane tp=new JScrollPane(jt);
setTitle("ex03_2");
Container cp=getContentPane();
cp.add(tp,BorderLayout.CENTER);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
System.exit(0);
}
}
jt.setSelectionMode(ListSelectionModel.SINGLE SELECTION);
TableModel tm=jt.getModel();
tm.addTableModelListener(new TableModelListener()
{
public void tableChanged(TableModelEvent tme)
{
int nRow=tme.getFirstRow();
float fNum;
float fSum=0;
for(int i=1;i<=2;i++)
{
fNum=Float.parseFloat(_);
fSum+=fNum;
}
float fAverage=fSum/2;
______;
}
}
}
}
【参考答案】
(String)jt.getValueAt(nRow,i)strData[nRow][3]=Float.toString......
(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)