java list 输入的多段文本内容_Java集合框架上机练习题:用户分别从两个文本框输入学生的姓名和分数.............

该程序创建了一个Java应用程序,用户可以在两个文本框中输入学生的姓名和分数,然后程序会根据成绩对这些学生进行排序,并在文本区域显示排序后的姓名和分数。应用实现了事件监听,确保输入有效并进行相应的错误处理。
摘要由CSDN通过智能技术生成

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

import java.awt.FlowLayout;

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.Box;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JTextArea;

import javax.swing.JTextField;

public class MyJframe extends JFrame implements ActionListener {

JFrame mJFrame;

JTextField mJTextField1, mJTextField2;

JTextArea mJTextArea;

MyJframe(){

mJFrame = new JFrame("成绩排序");

mJFrame.setBounds(200, 100, 900, 600);//设置窗口位置及窗口的宽高

mJFrame.setLayout(new FlowLayout());//设置窗口的布局

mJTextField1 = new JTextField(10);//显式创建两个文本框

mJTextField2 = new JTextField(10);

JButton mJButton = new JButton("确定");//创建按钮

Box mBox = Box.createHorizontalBox();//创建横向盒容器

mBox.add(new JLabel("姓名"));//添加隐式创建的标签,因为不需要点击事件所以隐式创建即可

mBox.add(mJTextField1);//所有add均为向父容器中添加

mBox.add(Box.createHorizontalStrut(50));//设置横向的间隔

mBox.add(new JLabel("分数"));

mBox.add(mJTextField2);

mBox.add(Box.createHorizontalStrut(50));

mBox.add(mJButton);

mJFrame.add(mBox);

mJTextArea = new JTextArea(40,80);//创建文本区域,用来显示输出,所以必须显式创建

mJTextArea.setText("自己在上边写数据,点插入\n");

mJFrame.add(mJTextArea);

mJFrame.setVisible(true);//使窗口显式出来

mJButton.addActionListener(this);

}

List list = new ArrayList();

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

/*

* 因为只有button有点击事件,所以直接可以不用判断,若有多个控件绑定了事件则需要判断

* 这里直接判断文本框是否为空

*/

mJTextArea.setText("");

String name = mJTextField1.getText().trim();

String grade = mJTextField2.getText().trim();

if(!"".equals(name) && !"".equals(grade)){

try {

list.add(new Student(name, Float.parseFloat(grade)));

mJTextArea.append("当前插入的信息为:姓名:"+name+" 成绩:"+grade+"\n");

} catch (NumberFormatException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

mJTextArea.append("不知道成绩是数字格式吗,重新输入!\n");

}

}

Collections.sort(list);//对list排序

Iterator iterator = list.iterator();

Student student;

while (iterator.hasNext()) {

student = iterator.next();

mJTextArea.append("name:"+student.name+" grade:"+student.grade+"\n");

}

}

}

class Student implements Comparable{

String name;

float grade;

public Student(String name, float grade) {

super();

this.name = name;

this.grade = grade;

}

@Override

public int compareTo(Student o) {

// TODO Auto-generated method stub

return (int) (o.grade*10 - this.grade*10);//保证一位小数的情况下比较的准确性

}

}

public class test1 {

public static void main(String[] args) {

// TODO 自动生成的方法存根

MyJframe myJframe = new MyJframe();//显示窗口

}

}

54a5db2a5f9d47adc2faeab93dff051d.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值