62,614
社区成员
发帖
与我相关
我的任务
分享
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ShortCutKeys extends JApplet
{
JButton button;
JCheckBox checkBox;
JMenuBar menuBar;
JMenu fileMenu;
JMenuItem exitMenuItem;
JPanel panel;
public void init()
{
Container container = this.getContentPane();
Handler eventHandler = new Handler();
checkBox = new JCheckBox("Hello Mom!");
checkBox.setMnemonic(java.awt.event.KeyEvent.VK_M);
checkBox.addActionListener(eventHandler);
button = new JButton("Hello Dad!");
button.setMnemonic(java.awt.event.KeyEvent.VK_D);
button.addActionListener(eventHandler);
panel = new JPanel();
panel.setLayout(new FlowLayout());
panel.add(checkBox);
panel.add(button);
exitMenuItem = new JMenuItem("Exit");
exitMenuItem.setMnemonic('x');
exitMenuItem.addActionListener(eventHandler);
fileMenu = new JMenu("File");
fileMenu.setMnemonic('f');
fileMenu.add(exitMenuItem);
menuBar = new JMenuBar();
menuBar.add(fileMenu);
container.add(menuBar, BorderLayout.NORTH);
container.add(panel, BorderLayout.CENTER);
}
class Handler implements ActionListener
{
public void actionPerformed(ActionEvent ae)
{
if (ae.getSource() == checkBox)
{
System.err.println("Action Performed on CHECKBOX");
}
else if (ae.getSource() == button)
{
System.err.println("Action Performed on BUTTON");
}
else if (ae.getSource() == exitMenuItem)
{
System.exit(0);
}
}
}
public static void main(String[] args)
{
JFrame frame = new JFrame("Short Cut Keys");
ShortCutKeys sck = new ShortCutKeys();
sck.init();
frame.getContentPane().add(sck);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we)
{
System.exit(0);
}
});
frame.setSize(300, 100);
frame.show();
}
}
import com.melloware.jintellitype.HotkeyListener;
import com.melloware.jintellitype.JIntellitype;
public class HotKey implements HotkeyListener ...{
static final int KEY_1 = 88;
static final int KEY_2 = 89;
static final int KEY_3 = 90;
/** *//**
* 该方法负责监听注册的系统热键事件
*
* @param key:触发的热键标识
*/
public void onHotKey(int key) ...{
switch (key) ...{
case KEY_1:
System.out.println("ctrl+alt+I 按下.........");
break;
case KEY_2:
System.out.println("ctrl+alt+O 按下.........");
break;
case KEY_3:
System.out.println("系统退出..........");
destroy();
}
}
/** *//**
* 解除注册并退出
*/
void destroy() ...{
JIntellitype.getInstance().unregisterHotKey(KEY_1);
JIntellitype.getInstance().unregisterHotKey(KEY_2);
JIntellitype.getInstance().unregisterHotKey(KEY_3);
System.exit(0);
}
/** *//**
* 初始化热键并注册监听事件
*/
void initHotkey() ...{
//参数KEY_1表示改组热键组合的标识,第二个参数表示组合键,如果没有则为0,该热键对应ctrl+alt+I
JIntellitype.getInstance().registerHotKey(KEY_1, JIntellitype.MOD_CONTROL + JIntellitype.MOD_ALT,
(int) 'I');
JIntellitype.getInstance().registerHotKey(KEY_2, JIntellitype.MOD_CONTROL + JIntellitype.MOD_ALT,
(int) 'O');
JIntellitype.getInstance().registerHotKey(KEY_3, JIntellitype.MOD_CONTROL + JIntellitype.MOD_ALT,
(int) 'X');
JIntellitype.getInstance().addHotKeyListener(this);
}
public static void main(String[] args) ...{
HotKey key = new HotKey();
key.initHotkey();
//下面模拟长时间执行的任务
while (true) ...{
try ...{
Thread.sleep(10000);
} catch (Exception ex) ...{
break;
}
}
}
}