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

来源:互联网 发布:dnf决战人工智能攻略 编辑:程序博客网 时间:2024/06/05 02:19
import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextArea;import javax.swing.JTextField;public class Student extends JFrame{ JLabel name,score; //姓名和成绩标签 JTextField tname,tscore;//创建文本框 JTextArea ShowArea;//显示文本区域 JButton  button; //创建按钮 JPanel panel;//创建面板 Map<String,String>studentMap,resultMap; public static void main(String[] args) {                new Student();   }   //构造方法   public Student() {                     init();       click();   }   //初始化方法   public void init() {                name=new JLabel("姓名");    //实例化       score=new JLabel("成绩");       tname=new JTextField(8);       tscore=new JTextField(8);       button=new JButton("确定");       panel=new JPanel();       ShowArea=new JTextArea();       panel.add(name);            //控件组合       panel.add(tname);       panel.add(score);       panel.add(button);       add(panel,BorderLayout.NORTH);     //设置位置       add(ShowArea, BorderLayout.CENTER);       setTitle("统计学生姓名和分数");          //设置窗口基本属性       setSize(500, 400);       setVisible(true);       setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);       validate();       studentMap=new HashMap<String,String>();                //非窗口属性初始化   }   //确定按钮被点击          private void click() {       button.addActionListener(new ActionListener() {                  public void actionPerformed(ActionEvent e) {               save();               showMap();           }              });   }  //点击按钮调用的保存方法   private void save() {       studentMap.put(tname.getText(),tscore.getText());       resultMap = sortMapByValue(studentMap); //按Value进行排序        tname.setText("");         //文本框内容清空       tscore.setText("");   }  //按值排序  public static Map<String, String> sortMapByValue(Map<String, String> map) {      if (map == null || map.isEmpty()) {          return null;      }      Map<String, String> sortedMap = new LinkedHashMap<String, String>();     List<Map.Entry<String,String>> entryList = new ArrayList<Map.Entry<String, String>>(map.entrySet());   //将元素存入List中,类型为entry      Collections.sort(entryList, new MapValueComparator());      Iterator<Map.Entry<String, String>> iter = entryList.iterator();      Map.Entry<String, String> tmpEntry = null;      while (iter.hasNext()) {          tmpEntry = iter.next();          sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());   //将List中的元素遍历出来存入map      }      return sortedMap;  }  //打印列表  private void showMap() {      ShowArea.setText("");      for(Map.Entry<String,String> entry:resultMap.entrySet()) {              ShowArea.append("姓名:"+entry.getKey()+"成绩:"+entry.getValue()+"\n");      }         }     }  //比较器类    class MapValueComparator implements Comparator<Map.Entry<String, String>> {  public int compare(Entry <String,String>s1, Entry<String, String> s2) {      return s1.getValue().compareTo(s2.getValue());  }  }  

运行结果显示:


阅读全文
0 0