请完成下列Java程序:用swing实现一个简单的学生成绩管理器,显示出学生的姓名,java成绩,c++成绩和这两门课的平均成绩,学生一共有4个人(Mike,Jack等)。要求可以修改学生的姓名和成绩,并且能够直接计算出平均成绩,如改变 Mike的java

admin2009-01-15  51

问题 请完成下列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 ex13_2 extends JFrame{
        private JTable it;
        private String[][]  strData;
        public static void main(String[] args){
           ex13_2 objl3_2=new ex13_2();
           obj13_2.pack();
           obj13_2.setVisible(true);
        }
        public ex13_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("exl3_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(fAverage)

解析 本题主要考查用swing基本构件设计图形用户界面,以及对二维数组的基本操作。解题关键是熟悉swing基本构件JTable的使用方法,熟悉swing的基本事件机制,会使用addTableModelListener()来注册该模型的一个TableModelListener,一旦表格内容改变,tableChanged()方法会被执行,使用getFirstRow()方法来得到数据被改变的行并重新计算平均值,由于数组数据是用来存储表格的数据,可以直接更改该数组的值。本题中,第1个空,根据参数nRow和i定位相应的数组中的数据;第 2个空,修改数组中记录平均值的单元中的数据。
转载请注明原文地址:https://kaotiyun.com/show/VIID777K
0

最新回复(0)