最近一直接触的都是B/S 、C/S模式的项目,触发程序的入口一般都是在页面上进行了某项操作,触发后台代码进行执行,数据通过数据库查询。
今天早上我突然想起来,刚学java的时候是通过控制台交换数据的,也就是通过System.in,于是我突然想重温一下,于是我写了个无聊的抽卡检验人品程序。
一开始我是这样写的:
import java.text.DecimalFormat;
import java.util.Scanner;
public class scannerTest {
public static void main(String args[]) {
System.out.println("请输入:");
Scanner sc = new Scanner(System.in);
String psaaWord = sc.next();
int i=1;
while(!"exit".endsWith(psaaWord)) {
int random = (int) (Math.random() * 1000);
if (random > 0 && random <= 17) {
System.out.println("震惊震惊,ssr!");
double jilv=1/(double)i*100;
DecimalFormat df = new DecimalFormat("0.0");
String temp=df.format(jilv);
System.out.println("第"+i+"次抽到,概率为:"+temp+"%");
break;
} else if (random > 17 && random <= 217) {
System.out.println("呵呵,sr!");
} else if (random > 217 && random < 517) {
System.out.println("嘞,s!");
} else {
System.out.println("r");
}
System.out.println("===============");
i=i+1;
psaaWord = sc.next();
}
System.out.println("结束!");
}
}
写完之后我跑了一下,思考了一会,我这是要干啥嘞?这个东西它根本不需要输入什么东西啊,它只需要触发执行而已啊。
于是我想了会,这种情况下,用键盘监控事件是比较合理的。
于是我改了我的代码。
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.text.DecimalFormat;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class keyReleasedTest extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
public keyReleasedTest() {
super("请开始抽卡,氪金才能变强!");
// 注册键盘监听
addKeyListener(new KeyAdapter() {
int i=1;
public void keyPressed(KeyEvent ke) {
//不想玩可以中途按ESC退出
if(ke.getKeyCode()==27){
if(i>1){
System.out.println(i-1+"次都不出ssr,不玩了!");
}
System.exit(0);
}
int random = (int) (Math.random() * 1000);
if (random > 0 && random <= 17) {
System.out.println("震惊震惊,ssr!");
double jilv=1/(double)i*100;
DecimalFormat df = new DecimalFormat("0.0");
String temp=df.format(jilv);
System.out.println("第"+i+"次抽到,概率为:"+temp+"%");
System.exit(0);
} else if (random > 17 && random <= 217) {
System.out.println(i+".呵呵,sr!");
} else if (random > 217 && random < 517) {
System.out.println(i+".嘞,s!");
} else {
System.out.println(i+".r!");
}
i=i+1;
//System.out.println("The char is:" + ke.getKeyChar()+ke.getKeyCode());
}
});
// 注册窗口监听
setSize(300, 300);//监听窗口大小
setVisible(true);//是否显示
setLocation(100,100);//坐标
//Image img=getToolkit().getImage("C:/Users/Lenovo/Desktop/只发图不说话.jpg");
//setIconImage(img);//设置右上角图标
String path = "C:/Users/Lenovo/Desktop/只发图不说话.jpg";
// 背景图片
ImageIcon background = new ImageIcon(path);
// 把背景图片显示在一个标签里面
JLabel label = new JLabel(background);
// 把标签的大小位置设置为图片刚好填充整个面板
label.setBounds(0, 0, this.getWidth(), this.getHeight());
// 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明
JPanel imagePanel = (JPanel) this.getContentPane();
imagePanel.setOpaque(false);
// 把背景图片添加到分层窗格的最底层作为背景
this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
}
public static void main(String[] args) {
new keyReleasedTest();
}
}
这个键盘监听程序设置了一个窗口,我觉得太单调,又给他加了个背景图片,实现主要是继承了 JFrame类。
这样的话只要随便按一下键盘就触发了,不像前面的那样,要在控制台输入没用的内容,中途按esc可以退出。
之前也没怎么接触过键盘监控,写的比较粗糙,基本上实现了一个无聊的抽卡测人品的小方法吧。