编写一个应用程序,用户分别从两个文本框输入学术的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中。
程序运行效果如图:
(1)代码
- Student.java
- public class Student implements Comparable {
- String name;
- int score;
- Student(String name,int score){
- this.name=name;
- this.score=score;
- }
- public String getName() {
- return name;
- }
- public int getScore() {
- return score;
- }
- //按学生成绩进行排序
- public int compareTo(Object b) {
- Student st=(Student)b;
- int m=this.score-st.score;
- //保证成绩相等时也能在文本区中显示
- if(m==0)
- return 1;
- else return m;
- }
- }
- MyFrame.java
- import java.awt.BorderLayout;
- import java.awt.event.*;
- import java.util.*;
- import javax.swing.*;
- public class MyFrame extends JFrame implements ActionListener{
- //TreeSet泛型集合对象
- TreeSet<Student> t;
- //姓名文本框
- JTextField text1;
- //成绩 文本框
- JTextField text2;
- // 确认按钮
- JButton button;
- //文本区
- JTextArea area;
- MyFrame(){
- init();
- setVisible(true);
- setDefaultCloseOperation(this.EXIT_ON_CLOSE);
- }
- void init() {
- //TreeSet集合对象
- t=new TreeSet<Student>();
- //创建 姓名 标签
- JLabel label1=new JLabel("姓名");
- //姓名文本框
- text1=new JTextField(10);
- //创建 成绩标签
- JLabel label2=new JLabel("成绩");
- //成绩 文本框
- text2=new JTextField(10);
- // 确认按钮
- button=new JButton("确定");
- //文本区
- area=new JTextArea(20,30);
- //创建面板,把上面的组件添加到面板
- JPanel panel=new JPanel();
- panel.add(label1);
- panel.add(text1);
- panel.add(label2);
- panel.add(text2);
- panel.add(button);
- //添加到窗口
- add(panel,BorderLayout.NORTH);
- add(area,BorderLayout.CENTER);
- //给第一个文本框text1 添加监听器
- text1.addActionListener(this);
- //给第二个文本框text1 添加监听器
- text2.addActionListener(this);
- //给button按钮添加监视器
- button.addActionListener(this);
- }
- //重写actionPerformed方法
- public void actionPerformed(ActionEvent e) {
- String name=text1.getText();
- int score=0;
- try{
- //通过Integer.parseInt,把字符串类型转换为整型的数字
- score=Integer.parseInt(text2.getText());
- //如果输入的名字合法,添加到集合t中,再调用show方法,将集合t的内容显示在文本区中
- if(name.length()>0) {
- Student s=new Student(name,score);
- t.add(s);
- show(t);
- }
- }catch(NumberFormatException exp) { //数字格式异常
- text2.setText("请输入正确的字符");
- }
- }
- public void show(TreeSet<Student> tr) {
- //每次调用show方法,先把文本区中的内容清空
- area.setText(null);
- //获取迭代器it
- Iterator<Student> it=tr.iterator();
- while(it.hasNext()) {
- Student s=(Student)it.next();
- //将学生的信息显示在文本区中
- area.append("姓名:"+s.getName()+" 成绩:"+s.getScore()+"\n");
- }
- }
- }
- Text.java
- public class Text {
- public static void main(String args[]){
- //创建MyFrame对象
- MyFrame win=new MyFrame();
- win.setBounds(100, 100, 400, 400);
- }
- }
(2)运行结果