编写一个应用程序,用户分别从两个文本框输入学术的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中:
import java.awt.*;
import java.awt.GridLayout;
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.*;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
class Gradesort extends JFrame implements ActionListener{
JLabel name = new JLabel("姓名");
JTextField textname = new JTextField(6); //文本框用于输入姓名
JLabel grade = new JLabel("成绩");
JTextField textgrade = new JTextField(6);//文本框用于输入成绩
JButton bsure = new JButton("确定");
JTextArea text = new JTextArea(5,25); //用于显示的文本区域
List<Student> list = new ArrayList<Student>(); //用数组存放输入的数据
Gradesort(){
super("学生成绩排序");
Container contentPane = getContentPane();
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2,3));
Box box = Box.createHorizontalBox(); //用一个横向的盒式容器,在容器中添加姓名成绩等组件
box.add(Box.createHorizontalStrut(3));
box.add(name);
box.add(textname);
box.add(Box.createHorizontalStrut(3));
box.add(grade);
box.add(textgrade);
box.add(bsure);
bsure.addActionListener(this); //为组件按钮bsure添加事件监听
panel.add(box); //面板中添加box
contentPane.add(panel, BorderLayout.NORTH);//将面板添加在容器的最上面
JScrollPane scroll = new JScrollPane(text); //在文字区域创建一个滚动条
contentPane.add(scroll,BorderLayout.CENTER);//将滚动条添加到容器中
setVisible(true); //刷新,保存设置
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置默认关闭方式
setSize(500, 400);
}
@Override
public void actionPerformed(ActionEvent a) { //重写事件监听的方法,只要点击就执行
// TODO Auto-generated method stub
text.setText("");
String name = textname.getText().trim();
String grade = textgrade.getText().trim();
list.add(new Student(name,Float.parseFloat(grade))); //在list中添加数据
// text.append("当前插入的信息为:姓名:"+name+" 成绩:"+grade+"\n");
Collections.sort(list);//对数据进行排序
Iterator<Student> iterator = list.iterator();//为list添加迭代器
Student student;
while (iterator.hasNext()) { //只要迭代器中还有数据就执行
student = iterator.next();
text.append("姓名:"+student.name+" 成绩:"+student.grade+"\n");
}
}
}
class Student implements Comparable<Student>{
String name;
float grade;
public Student(String name, float f) {
super();
this.name = name;
this.grade = f;
}
@Override
public int compareTo(Student s) {
// TODO Auto-generated method stub
return (int) (s.grade*10 - this.grade*10);
}
}
Test:
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Gradesort fram = new Gradesort(); //创建窗口
}
}
运行结果: