问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

2、 用户从键盘上输入10个0到99之间的数字,统计数字分布,使用Java Appl...

发布网友 发布时间:2024-10-08 01:40

我来回答

1个回答

热心网友 时间:2024-10-08 22:48

import javax.swing.*;
import java.util.*;
import java.util.Map.*;
import java.awt.event.*;
import java.applet.Applet;
/**
* @author wubenhua
* @program 监听键盘事件统计字符个数
**/
public class IntegerCount extends Applet {

private JButton bt_Clear = new JButton("Clear"); //清除文本框及容器内容
private JTextArea disTextArea = new JTextArea(); //显示统计好的字符情况
private JTextArea inputTextArea = new JTextArea(); //接收键盘输入的字符并且监听键盘的输入

//为显示文本框添加滚动条(水平与垂直方向)
private JScrollPane scrollOut = new JScrollPane(disTextArea,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
//为接收文本框添加垂直文本框
private JScrollPane scrollIn = new JScrollPane(inputTextArea,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

//声明一个Map接口的引用指向其子类的一个泛型对象,用来记录每一个数字出现的个数;
private Map<Integer,Integer> map = null;
private StringBuffer array = new StringBuffer();

private static final int ONE = 1 ; //若监听到的字符没有出现过,则设置其出现一次;

private JRadioButton [] rb = {new JRadioButton("keyTyped"), new JRadioButton("keyPressed"), new JRadioButton("keyReleased")};

public void init() {
setLayout(null); //设置布局为null
setSize(600,350);
map = new HashMap<Integer,Integer>(); //为Map引用new一个HashMap的对象

/*-----------------接收文本框------------------*/

inputTextArea.setLineWrap(true); //输入文本框设置为自动换行
scrollIn.setLocation(5, 200);
scrollIn.setSize(580, 80);
add(scrollIn);

inputTextArea.addKeyListener(new textAreaKeyListener());//为接收文本框注册一个监听器

/*----------------显示文本框---------------------*/

disTextArea.setEditable(false); //显示文本框设置为不可编辑
scrollOut.setLocation(5, 5);
scrollOut.setSize(580, 190);
add(scrollOut);

bt_Clear.setLocation(450,300);
bt_Clear.setSize(100,30);
add(bt_Clear);

bt_Clear.addActionListener(new ActionListener(){
//为清除按钮注册一个监听事件

public void actionPerformed(ActionEvent e) {
disTextArea.setText("");
inputTextArea.setText("");
map.clear();
System.out.println("\n清空完毕!\n");
JOptionPane.showConfirmDialog(null, "清空完毕!", "提示", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE);
inputTextArea.requestFocus();
}
});

ButtonGroup rg = new ButtonGroup();
for(int i = 0; i<rb.length; i++)
{
rb[i].setLocation(10+150*i,300);
rb[i].setSize(100,30);
rg.add(rb[i]);
add(rb[i]);
}
rb[0].setSelected(true);//默认选中KeyTyped

}

private class textAreaKeyListener implements KeyListener {

public void accepteMethod(KeyEvent e,Integer data){

if (!map.containsKey(data)) {
map.put(data, ONE);
} else {
int value = map.get(data);
map.put(data, value + 1);
}
disPlay();
//System.out.println(map);
}

public void accepteKey(KeyEvent e) {
char myChar = e.getKeyChar(); // 获得此时按下键盘的ASCII
if(myChar>='0' && myChar<='9')//只接收0-9的字符
{
array.append(myChar);
}
else if(array.length()>0 && myChar == KeyEvent.VK_SPACE)
{

if(array.length()<=2)
{
Integer data = new Integer(array.toString());
array.delete(0, array.length()); //每次都清空
//System.out.println("data:" + data + " length:" + array.length());
accepteMethod(e,data);
}else{
array.delete(0, array.length()); //数据超过100是无效数据清空
}
}

}

/**
*重写KeyListener接口的KeyTyped的方法
*/
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
if(rb[0].isSelected()){
accepteKey(e);
}
}

/**
*重写KeyListener接口的KeyPressed的方法
*/
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if(rb[1].isSelected()){
accepteKey(e);
}
}

/**
*重写KeyListener接口的KeyReleased的方法
*/
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
if(rb[2].isSelected()){
accepteKey(e);
}
}
}

/**
*输出HashMap容器的键-值对
*/
public void disPlay(){

Iterator<Entry<Integer,Integer>> it = map.entrySet().iterator();

while (it.hasNext()) {

Map.Entry<Integer,Integer> entry = (Entry<Integer,Integer>) it.next();
Object key = entry.getKey();
Object value = entry.getValue();

if(key.equals('\n')) {
disTextArea.append(" 'enter' ->"+ value + "个 " );
System.out.print(" 'enter' ->"+ value + "个 " );
}
else{
disTextArea.append(" " + ""+key +"->"+ value + "个 " );
System.out.print(" " + ""+key +"->"+ value + "个");
}

}
disTextArea.append("\n");
System.out.println();

}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
用六个成语各造一段话 关于把握机会的名言名句 关于把握住机会的名言名句(把握机会,成就未来) 关于把握机会的名言名句(把握机会的励志句子) 关于机会的名言名句篇一 包括“机遇”的名言名句(一) BPM中国普及之路还有多远? 哪个公司可以做OA系统 目前业内有很多人认为OA现在某些应用或者说功能在向BPM领域延生,请问... ting的三个声调组词 东莞比较大的针织或毛织制衣厂有哪些? ...输入一组数字,个数未知,判断中间相同数字出现的次数!例如1 2 5... 更改“任务栏和开始菜单属性”的“开始菜单”后,桌面没有了“我的电脑... 有关骆驼祥子第12章好词好句的短句摘抄(行走在旷野中的灵魂) ...有两个盘DG,但我点开的时候,为什么显示将磁盘插入驱动器DG 在平面DEGB上,DG是DH的投影嘛?如果不是,谁才是? 为什么我的电脑磁盘D里什么都没有,为什么会只有16.7GB? 求摩托车一辆—轻骑标致jet force 50 上海一一成都经过渐江金花市吗? 2024年女兵报名时间 把美国房产留给孩子,怎么送能少缴税? 吉利远景x3分期多少钱? 远景X3买全保多少钱?第三者从五十万加到一百万要加多少钱? ...JAVA中,静态类,抽象类,实例类,静态方法,抽象方法,接口,以及继承,实现... 大唐西城记:今译目录 大唐西域记今译内容简介 ...安装时却失败了 提示了一大段英文,帮忙解答吧~~~大虾们 大虾们 小弟求帮助阿 DNF里面的特殊符号,实在是不会打 谁要是会的话... 心碎符号怎么打啊,就就破碎的心的符号,不要说用QQ拼音,我找遍了,都... ...比如:根号、上下标、极限符号等。大虾们,可以教我吗? 有谁知道东莞勤上厂工资怎么样 东莞市全方圆纸制品有限公司怎么样? 为什么清华大学英文是tsinghua 中华牌香烟上的拼音为什么是chongwa而不是zhonghua? WOW最感人的那个战士~一个鬼服的战士! 我下了王码五笔86版,怎么打字法没出来? 我的XP系统装王码五笔98版为何有的简码字用全码打不出.Z键也没用. 儿嬉[ér xī]什么意思?近义词和反义词是什么?英文翻译是什么? 有没有 创亿星 这个学习机 创亿星学习机怎么样 三立电视台旗下企业 如何在衢州规划一次很棒的旅行攻略? 甘肃创亿风网络科技有限公司怎么样? 驾考宝典支付微信支付成功是否能够退出?能不能退款感觉不好用。_百度... 衢州九龙湖风景区的门票优惠政策是什么? 呼家楼宾馆酒店介绍 如何问一个人的身份(英语) 呼家楼宾馆酒店信息 有什么办法可以知道一个人的生日?身份证啊QQ啊问朋友啊这些就不要提了... 十一要去北京玩,哪个酒店价位在300左右?