下面的例子演示得到键码和字符的方法,在命令行上显示结果 。
例1 本例程演示键盘监听器后键码的用法 。
///
// KeyEvt.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class MyKeyListener implements KeyListener{
publicvoid keyPressed(KeyEvent evt) {
System.out.println("\n按键被按下");
showKeyEventMsg(evt);
}
publicvoid keyReleased(KeyEvent evt){ }
publicvoid keyTyped(KeyEvent evt) { }
privatevoid showKeyEventMsg(KeyEvent evt){//显示按键事件信息
//得到按键对应的整型数
int code = evt.getKeyCode();
//返回按键事件所代表的字符
char c = evt.getKeyChar();
//得到代表按键的字符串
String szText = evt.getKeyText(code);
if (code != KeyEvent.VK_UNDEFINED)
System.out.println("\n按键对应的整型数:"+code);
if (c != KeyEvent.CHAR_UNDEFINED)
System.out.println("\n与按键相联系的字符:"+c);
if (evt.isShiftDown())
System.out.println("\n按键Shift被按下");
System.out.println("\n按键本身的字符串:"+szText);
}
}
class ButtonPanel extends JPanel{
public ButtonPanel() {
//新建一个文本域组件
tf = new JTextField(20);
add(tf);
//指定用来处理该按钮事件的监听器对象为JPanel本身
myListener = new MyKeyListener();
tf.addKeyListener(myListener);
}
private JTextField tf;
private MyKeyListener myListener;
}
class ButtonFrame extends JFrame{
public ButtonFrame() {
setTitle("键盘事件示例程序");
setSize(300, 200);
setLocation(100,100);
addWindowListener(new WindowAdapter() {
publicvoid windowClosing(WindowEvent e)
{ System.exit(0);
}
});
Container ctPane = getContentPane();
ctPane.add(new ButtonPanel());
}
}
publicclass KeyEvt{
publicstaticvoid main(String[] args) {
JFrame frame = new ButtonFrame();
frame.setVisible(true);
}
}
///简要说明
程序建立了自己的键盘监听器MyKeyListener,定义了一个新方法showKeyEventMsg用来在标准输出设备上显示有关的键盘信息 。
在面版ButtonPanel上建立文本框并加键盘监听器 。把面版ButtonPanel放到窗口ButtonFrame中 。
java接受用户输入代码import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/*
* System.in 标准输入流 。是从键盘获取数据的
*
* 键盘录入数据:
*A:main方法的args接收参数 。
*java HelloWorld hello world java
*B:Scanner(JDK5以后的)
*Scanner sc = new Scanner(System.in);
*String s = sc.nextLine();
*int x = sc.nextInt()
*C:通过字符缓冲流包装标准输入流实现
*BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
*/
public class SystemInDemo {
public static void main(String[] args) throws IOException {
// //获取标准输入流
// InputStream is = System.in;
// //我要一次获取一行行不行呢?
// //行 。
// //怎么实现呢?
// //要想实现 , 首先你得知道一次读取一行数据的方法是哪个呢?
// //readLine()
// //而这个方法在哪个类中呢?
// //BufferedReader
// //所以,你这次应该创建BufferedReader的对象,但是底层还是的使用标准输入流
// // BufferedReader br = new BufferedReader(is);
// //按照我们的推想 , 现在应该可以了 , 但是却报错了
// //原因是:字符缓冲流只能针对字符流操作 , 而你现在是字节流 , 所以不能是用?
// //那么,我还就想使用了,请大家给我一个解决方案?
推荐阅读
- 夏普显卡怎么样,夏普是真4k吗
- 直播放礼物有什么好处,直播放礼物有什么好处吗
- flutter手势冲突,flutter按钮效果
- 双头u盘怎么连接手机,双头优盘怎样连接手机
- php判断数据库状态 php判断数据库状态的方法
- 老人无聊的时候看什么电视,老人该看什么电视
- net传说怎么安装,如何下载传说
- 低配好玩的游戏射击手机,好玩的低配置射击手游
- ws连接命令Linux linux wsl