Java集合框架上机练习题(泛型、JFrame)

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

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);  
    }  
  
}  





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值