Java集合框架上机练习题(泛型、JFrame)用户分别从两个文本框输入学术的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中。

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

程序运行效果如图:


(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)运行结果




  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值