📄 keyset.java
字号:
package system;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
import system.*;
//键设置界面
public class KeySet
extends JDialog {
private JTextField upField;
private JTextField downField;
private JTextField leftField;
private JTextField rightField;
//默认键设置
private static final int UP = KeyEvent.VK_UP;
private static final int DOWN = KeyEvent.VK_DOWN;
private static final int LEFT = KeyEvent.VK_LEFT;
private static final int RIGHT = KeyEvent.VK_RIGHT;
private static final int WIDTH = 300;
private static final int HEIGHT = 120;
public KeySet(JFrame owner) {
super(owner, true); //模式对话框
this.initUI();
}
//初始化界面
public void initUI() {
JPanel p = new JPanel();
Border e = BorderFactory.createEtchedBorder();
p.setBorder(e);
JLabel up = new JLabel("向上键:");
upField = new JTextField(6);
upField.setOpaque(false);
JLabel down = new JLabel("向下键:");
downField = new JTextField(6);
downField.setOpaque(false);
JLabel left = new JLabel("向左键:");
leftField = new JTextField(6);
leftField.setOpaque(false);
JLabel right = new JLabel("向右键:");
rightField = new JTextField(6);
rightField.setOpaque(false);
JButton resume = new JButton("恢复默认值");
resume.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Config.UP = KeyEvent.VK_UP;
Config.DOWN = KeyEvent.VK_DOWN;
Config.LEFT = KeyEvent.VK_LEFT;
Config.RIGHT = KeyEvent.VK_RIGHT;
//显示恢复后的默认值
upField.setText(KeyEvent.getKeyText(Config.UP));
downField.setText(KeyEvent.getKeyText(Config.DOWN));
leftField.setText(KeyEvent.getKeyText(Config.LEFT));
rightField.setText(KeyEvent.getKeyText(Config.RIGHT));
Config.saveSystemConfig();//保存
Config.loadSystemConfig();//重新加载
}
});
p.add(up);
p.add(upField);
p.add(down);
p.add(downField);
p.add(left);
p.add(leftField);
p.add(right);
p.add(rightField);
p.add(resume);
this.getContentPane().add(p);
//=======================为文本域注册监听器==============================
this.addFieldListener(upField, Config.UP);
this.addFieldListener(downField, Config.DOWN);
this.addFieldListener(leftField, Config.LEFT);
this.addFieldListener(rightField, Config.RIGHT);
}
//为文本域注册监听器
public void addFieldListener(final JTextField f, int key) {
//以文本形式显示默认的的键
f.setText(KeyEvent.getKeyText(key));
f.setEditable(false);
f.setSelectedTextColor(new Color(20,200,20));
//==========================注册键盘事件监听器==============================
f.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (isValidKey(e)) {
int k = e.getKeyCode();
String name = e.getKeyText(k); //获得按键的文本
f.setText(name); //以文本形式显示设置的键
Object source = e.getSource();
if(source == upField){
Config.UP = k;
}
else if(source == downField){
Config.DOWN = k;
}
else if(source == leftField){
Config.LEFT = k;
}
else if(source == rightField){
Config.RIGHT = k;
}
Config.saveSystemConfig(); //保存设置
Config.loadSystemConfig(); //重新加载系统配置
}
}
});
//=========================注册焦点时间监听器================================
f.addFocusListener(new FocusAdapter(){
public void focusGained(FocusEvent e){
f.setForeground(new Color(20,200,20));//设置前景色
}
public void focusLost(FocusEvent e){
f.setForeground(Color.black);//当失去焦点时恢复前景色
}
});
}
//判断按键是否是有效键
public boolean isValidKey(KeyEvent e) {
int k = e.getKeyCode();
//判断是否是方向键上下左右
for (int i = KeyEvent.VK_LEFT; i <= KeyEvent.VK_DOWN; i++) {
if (k == i) {
return true;
}
}
//判断是否是字母a到z
for (int i = KeyEvent.VK_A; i <= KeyEvent.VK_Z; i++) {
if (k == i) {
return true;
}
}
//判断是否是小键盘的数字键0到9
for (int i = KeyEvent.VK_NUMPAD0; i <= KeyEvent.VK_NUMPAD9; i++) {
if (k == i) {
return true;
}
}
//判断是否是数字0到9
for (int i = KeyEvent.VK_0; i <= KeyEvent.VK_9; i++) {
if (k == i) {
return true;
}
}
return false;
}
//显示键设置的静态方法
public static void showKeySetDialog(JFrame owner) {
new KeySet(owner).show();
}
public void show() {
this.setTitle("设置");
this.setResizable(false);
this.setSize(this.WIDTH, this.HEIGHT);
Dimension s = Toolkit.getDefaultToolkit().getScreenSize();
int width = s.width;
int height = s.height;
this.setLocation( (width - this.WIDTH) / 2, (height - this.HEIGHT) / 2);
super.show();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -