第十四周作业

来源:互联网 发布:知乎市值多少 编辑:程序博客网 时间:2024/06/08 12:02

编写一个应用程序,用户分别从两个文本框输入学术的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中。

package week14;

 

import java.awt.FlowLayout;

import java.awt.Label;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Iterator;

import java.util.List;

 

import javax.swing.Box;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JTextArea;

import javax.swing.JTextField;

 

* @author Lenovo_PC

 *

 */

publicclassTest2 {

 

    publicstaticvoidmain(String[] args) {

        // TODO Auto-generated method stub

        MyJframe myJframe = new MyJframe();//显示窗口

    }

 

}

 

 

class MyJframe extends JFrame implements ActionListener{

    JFrame mJFrame;

    JTextField mJTextField1;

    JTextField mJTextField2;

    JTextArea mJTextArea;

    MyJframe(){

        mJFrame = new JFrame("成绩排序");

        mJFrame.setBounds(200,100,900, 600);       mJFrame.setLayout(new FlowLayout());

        mJTextField1 = new JTextField(10);

        mJTextField2 = new JTextField(10);

        JButton mJButton = new JButton("插入");//创建按钮

        Box mBox =Box.createHorizontalBox();//创建横向盒容器

        mBox.add(new Label("姓名:"));//添加隐式创建的标签,因为不需要点击事件所以隐式创建即可

        mBox.add(mJTextField1);//所有add均为向父容器中添加

        mBox.add(Box.createHorizontalStrut(50));//设置横向的间隔

        mBox.add(new Label("分数:"));

        mBox.add(mJTextField2);

       mBox.add(Box.createHorizontalStrut(50));

        mBox.add(mJButton);

        mJFrame.add(mBox);

        mJTextArea = new JTextArea(40,80);//创建文本区域,用来显示输出,所以必须显式创建

        mJTextArea.setText("自己在上边写数据,点插入\n");

        mJFrame.add(mJTextArea);

        mJFrame.setVisible(true);//使窗口显式出来

        mJButton.addActionListener(this);

    }

 

    List<Student> list = new ArrayList<Student>();

 

    @Override

    publicvoidactionPerformed(ActionEvent e) {

        // TODO Auto-generated method stub


        mJTextArea.setText("");

        String name =mJTextField1.getText().trim();

        String grade =mJTextField2.getText().trim();

        if(!"".equals(name) && !"".equals(grade)){

            try {

                list.add(new Student(name, Float.parseFloat(grade)));

                mJTextArea.append("当前插入的信息为:姓名:"+name+"   成绩:"+grade+"\n");

            } catch (NumberFormatException e1) {

                // TODO Auto-generated catch block

               e1.printStackTrace();

                mJTextArea.append("不知道成绩是数字格式吗,重新输入!\n");

            }

        }

        Collections.sort(list);//list排序

        Iterator<Student>iterator = list.iterator();

        Student student;

        while (iterator.hasNext()) {

            student =iterator.next();

            mJTextArea.append("name:"+student.name+"   grade:"+student.grade+"\n");

        }

    }

}

 

class Student implements Comparable<Student>{

 

    String name;

    float grade;

 

    publicStudent(String name,float grade) {

        super();

        this.name = name;

        this.grade = grade;

    }

 

    @Override

    publicintcompareTo(Student o) {

        // TODO Auto-generated method stub

        return (int) (o.grade*10 - this.grade*10);//保证一位小数的情况下比较的准确性

    }

 

}

原创粉丝点击