这个是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);
}
}