Java6学习笔记44——JAVA中的热键实例2

本文展示了一个使用Java Swing创建的示例应用,该应用能够通过热键控制界面上组件的位置变化。具体实现了键盘上方向键及Page Up/Down等按键对应的功能,包括移动标记位置到顶部、底部或中间等。

此例中组件的焦点和窗体的焦点都响应热键。

import javax.swing.JFrame;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.JComponent;
import javax.swing.BoxLayout;
import java.awt.Container;
import java.awt.Component;
import java.awt.KeyboardFocusManager;
import java.awt.KeyEventDispatcher;
import java.awt.event.KeyEvent;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;

public class KeyDemo2 extends JFrame implements KeyEventDispatcher {
KeyboardFocusManager manager;
Marker marker;
JTextField textField;
public static void main(String arg[]) {
new KeyDemo2();
}
public KeyDemo2() {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
} );
buildFrame();
setLocation(250,150);
setVisible(true);

manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();//获取KeyboardFocusManager对象
manager.addKeyEventDispatcher(this);//增加一个调度链
}
private void buildFrame() {
Container pane = getContentPane();
BoxLayout boxlayout = new BoxLayout(pane,BoxLayout.Y_AXIS);
pane.setLayout(boxlayout);

textField = new JTextField(10);
textField.setAlignmentX(Component.CENTER_ALIGNMENT);
pane.add(textField);

marker = new Marker(200,200);
pane.add(marker);

pack();
}
public boolean dispatchKeyEvent(KeyEvent e) {//实现 KeyEventDispatcher接口,完成响应程序
int code = e.getKeyCode();
switch(code) {
case KeyEvent.VK_HOME:
marker.setMiddle();
break;
case KeyEvent.VK_PAGE_UP:
marker.setTop();
break;
case KeyEvent.VK_PAGE_DOWN:
marker.setBottom();
break;
case KeyEvent.VK_UP:
marker.moveUp();
break;
case KeyEvent.VK_DOWN:
marker.moveDown();
break;
case KeyEvent.VK_LEFT:
marker.moveLeft();
break;
case KeyEvent.VK_RIGHT:
marker.moveRight();
break;
}
return(false);//如果指派了 KeyEvent,则返回 true ;否则,返回 false
}
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值