键盘事件 首先会有一个 event e (废话)
然后 e.getKeyChar() 会知道 你按下的是 v 还是 c
再然后 e.getModifiers() 会告诉你 是
KeyEvent.ALT_MASK
CTRL_MASK
SHIFT_MASK
etc.明白?
然后 e.getKeyChar() 会知道 你按下的是 v 还是 c
再然后 e.getModifiers() 会告诉你 是
KeyEvent.ALT_MASK
CTRL_MASK
SHIFT_MASK
etc.明白?
然后在构建器中 MouseHandler handler = new MouseHandler(); // Create the mouse addMouseListener(handler); // Listen for button events
addMouseMotionListener(handler); // Listen for motion events KeyHandler listener = new KeyHandler();
addKeyListener(listener);//加入鼠标和键盘的监听器class KeyHandler implements KeyListener
{
public void keyPressed(KeyEvent event)
{
int keyCode = event.getKeyCode(); System.out.println(keyCode);
}
//另外两个
}同样的加入鼠标的
执行结果:
鼠标的执行正常。键盘的就不执行!
呵呵!怎么搞的呀!
public boolean isFocusTraversable()
{
return true;
}
keyPressed事件
!
但mouse中的事件全都可以执行!hh !
...
txt1.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){ if ((e.getKeyCode()==KeyEvent.VK_V) &&
((e.getModifiers()&KeyEvent.CTRL_MASK)==KeyEvent.CTRL_MASK))
{
System.out.println("you press ctrl+v");
...
}
}
class SketchView extends JComponent implements Observer, Constants,this.addKeyListener(*&**)她怎么压根就不执行这里呀!
应该用一个较为具体的组件 比如 JButton
代码如下:
/**
@version 1.30 2000-06-03
@author Cay Horstmann
*/import java.awt.*;
import java.awt.geom.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;public class Sketch
{
public static void main(String[] args)
{
SketchFrame frame = new SketchFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}/**
A frame with a panel for sketching a figure
*/
class SketchFrame extends JFrame
{
public SketchFrame()
{
setTitle("Sketch");
setSize(WIDTH, HEIGHT); // add panel to frame SketchPanel panel = new SketchPanel();
Container contentPane = getContentPane();
contentPane.add(panel);
} public static final int WIDTH = 300;
public static final int HEIGHT = 200;
}/**
A panel for sketching with the keyboard.
*/
class SketchPanel extends JComponent
{
public SketchPanel()
{
KeyHandler listener = new KeyHandler();
addKeyListener(listener);
} public boolean isFocusTraversable()
{
return true; // allow panel to get input focus
}
private class KeyHandler implements KeyListener
{
public void keyPressed(KeyEvent event)
{
int keyCode = event.getKeyCode();
System.out.println(keyCode);
// set distance
} public void keyReleased(KeyEvent event) {} public void keyTyped(KeyEvent event)
{
char keyChar = event.getKeyChar();
}
}
}另外我得Frame里有一些抽象按钮!有没有影响!
键盘事件就不执行!
?
他的确室可以得!
但为什么不调用呢!
在Frame中!
//getContentPane().add(toolBar, BorderLayout.NORTH);
还有加入视图的语句!
如果去掉toolBar,只加视图就运行正常,但是两个都加!则不能运行键盘事件!
应该还是焦点的问题?
帮帮忙?
如果不加JToolBar(只有JComponent)则程序正常!
否则键盘事件不执行,但同时鼠标事件一直运行正常!