关于重写tostring并且引用于treemap

这个是Treemap在MyeventInfo类中
public MyEventInfo(String myEvent, int myEventValue) {
    this.myEvent = myEvent;
    this.myEventValue = myEventValue;
}
static Map<MyEventInfo, Integer> myMap = new TreeMap<MyEventInfo,Integer>();

这一段是在MyEventInfo中重写的tostring方法


@Override
public String toString() {
    if (this.myEvent.equals("MouseButton")) {
        return ("MouseButton" + this.myEventValue);
    } else if (this.myEvent.equals("Key")) {
        return ("Key" + String.valueOf(this.myEventValue));
    } else {
        return "000000";
    }
}

本来的代码是每次敲击一个键盘就会记录次数

myMap.put(mei,mapValue);

map.value是往treemap中加入的int数

MyEventInfo mei = new MyEventInfo("Key",e.getKeyChar());

mei就是 MyEventInfo

想打印的格式是比如Key e :1之类

直接打印是没有把ASCII换成字符Key113=3, Key119=3,

 

如何写或者添加代码 在打印map的过程中把ASCII码换成字符

自己写好像一直报错

MyComponent2.java

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

import javax.swing.JComponent;

public class MyComponent2 extends JComponent implements MouseListener {

   private static final long serialVersionUID = 1L;

   //build hashset
     static  Set<Object> mySet = new HashSet();
     //build tree map
       static Map<MyEventInfo, Integer> myMap = new TreeMap<MyEventInfo,Integer>();

       //static Integer mbi = null;
       
       public MyComponent2(Set<Object> mySet,Map<MyEventInfo, Integer> myMap){
          this.mySet = mySet;
          this.myMap = myMap;
       }

   @Override
   public void mouseClicked(MouseEvent e) {
   }

   @Override
   public void mousePressed(MouseEvent e) {
      mySet.add(e.getButton());
        System.out.println("Mouse Button" +  e.getButton());
        MyEventInfo mei = new MyEventInfo("MouseButton",e.getButton());
        //check the exist of mousebutton
      if(myMap.containsKey(mei)){
         Integer mapValue = new Integer(myMap.get(mei));
         mapValue += 1;
         myMap.put(mei,mapValue);
      }
      else{
         myMap.put(mei,1);
      }
   }

   @Override
   public void mouseReleased(MouseEvent e) {
   }

   @Override
   public void mouseEntered(MouseEvent e) {
   }

   @Override
   public void mouseExited(MouseEvent e) {
   }
}

MyEventInfo.java

import java.util.*;
public class MyEventInfo implements Comparable<MyEventInfo> {

    public String myEvent;
    public Integer myEventValue;

    public MyEventInfo(String myEvent, int myEventValue) {
        this.myEvent = myEvent;
        this.myEventValue = myEventValue;
    }

    //override the compareTo,to sort the TreeMap
    @Override
    public int compareTo(MyEventInfo mei) {
        return this.myEventValue.compareTo(mei.myEventValue);
    }

    //overrride the tostring to print the Mousebutton/key
    @Override
    public String toString() {
        if (this.myEvent.equals("MouseButton")) {
            return ("MouseButton" + this.myEventValue);
        } else if (this.myEvent.equals("Key")) {
            return ("Key" + String.valueOf(this.myEventValue));
        } else {
            return "000000";
        }
    }

}

MyMain.java

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseListener;
import java.util.*;

import javax.swing.*;

public class MyMain{
    //instantiate hashset and treemap
    static  Set<Object> mySet = new HashSet();
    static Map<MyEventInfo, Integer> myMap = new TreeMap<MyEventInfo,Integer>();
    //static String myEvent;
    //static Integer myEventValue;
    public static void main(String[] args) {

        JFrame f = new JFrame("MyMain");
        f.setSize(500, 500);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
        MyComponent2 a2 = new MyComponent2(mySet,myMap);
        f.add(a2);
        f.addMouseListener((MouseListener) a2);
        KeyAdapter adper = new KeyAdapter() {
          @Override
            public void keyPressed(KeyEvent e){
              //if input enter, print
             if (e.getKeyCode() == e.VK_ENTER) {
                     for (Object s : mySet) {
                         System.out.println(s);
                     }

                     System.out.println(myMap);

                 }
                 else{
                     System.out.println(e.getKeyChar());
                     mySet.add(Character.toString(e.getKeyChar()));
                     MyEventInfo mei = new MyEventInfo("Key",e.getKeyChar());
                     //Check if there is a MEI in the map. If there is +1, create it if not
                     if(myMap.containsKey(mei)){
                         Integer mapValue = new Integer(myMap.get(mei));
                         mapValue += 1;
                         myMap.put(mei,mapValue);
                     }
                     else{
                         myMap.put(mei,1);
                     }
                     }
               
                }
          };
          
          f.addKeyListener(adper);



    }
}
ASCII码转字符串的地方可以这么写 return ("Key" + (char) this.myEventValue.intValue());

发下完整的代码吧

你好,我是问答小助手。为了技术专家团可以更好地为您解答问题,烦请您补充下(1)问题背景详情,(2)您想解决的具体问题,(3)问题相关图片。便于技术专家团更好地理解问题,并给出解决方案。

您可以点击问题下方的【编辑】,进行补充修改问题。