编写一个应用程序,用户分别从两个文本框输入学术的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中。
程序运行效果如图:
(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)运行结果