我在textfield 框里面加上了 textField.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
System.err.println("keyPressed Key Code" + e.getKeyCode());
}我本想监听tab事件,但是发现当你按tab得时候根本不激发addKeyListener。也就是说根本不走到这段代码里面去。非常郁闷。本想用focusLost做,但是又有一个问题。用鼠标移走时激发的focusLost和用tab时focusLost 事件所作得功能不一样的。 有什么办法区分开来的吗?谢谢!
下面是源代码!
----------------------------------package my;import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JTextField;public class TabEvent extends JFrame { private JTextField textField; /**
* Launch the application
*
* @param args
*/
public static void main(String args[]) {
try {
TabEvent frame = new TabEvent();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* Create the frame
*/
public TabEvent() {
super();
getContentPane().setLayout(new FlowLayout());
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); textField = new JTextField();
textField.addFocusListener(new FocusAdapter() {
public void focusLost(final FocusEvent e) {
}
});
textField.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
System.err.println("keyPressed Key Code" + e.getKeyCode());
} /**
* Invoked when a key has been released.
*/
public void keyTyped(KeyEvent e) { System.err.println("keyTyped Key Code" + e.getKeyCode());
} public void keyReleased(final KeyEvent e) { System.err.println("keyReleased Key Code" + e.getKeyCode()); if (e.getSource().getClass().equals(JTextField.class)
&& e.getKeyCode() == KeyEvent.VK_ENTER) {
System.err.println("Enter key!");
}
if (e.getSource().getClass().equals(JTextField.class)
&& e.getKeyCode() == KeyEvent.VK_TAB) {
System.err.println("TAB key!");
} }
});
textField.setPreferredSize(new Dimension(80, 25));
getContentPane().add(textField);
//
}}
public void keyPressed(KeyEvent e) {
System.err.println("keyPressed Key Code" + e.getKeyCode());
}我本想监听tab事件,但是发现当你按tab得时候根本不激发addKeyListener。也就是说根本不走到这段代码里面去。非常郁闷。本想用focusLost做,但是又有一个问题。用鼠标移走时激发的focusLost和用tab时focusLost 事件所作得功能不一样的。 有什么办法区分开来的吗?谢谢!
下面是源代码!
----------------------------------package my;import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JTextField;public class TabEvent extends JFrame { private JTextField textField; /**
* Launch the application
*
* @param args
*/
public static void main(String args[]) {
try {
TabEvent frame = new TabEvent();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* Create the frame
*/
public TabEvent() {
super();
getContentPane().setLayout(new FlowLayout());
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); textField = new JTextField();
textField.addFocusListener(new FocusAdapter() {
public void focusLost(final FocusEvent e) {
}
});
textField.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
System.err.println("keyPressed Key Code" + e.getKeyCode());
} /**
* Invoked when a key has been released.
*/
public void keyTyped(KeyEvent e) { System.err.println("keyTyped Key Code" + e.getKeyCode());
} public void keyReleased(final KeyEvent e) { System.err.println("keyReleased Key Code" + e.getKeyCode()); if (e.getSource().getClass().equals(JTextField.class)
&& e.getKeyCode() == KeyEvent.VK_ENTER) {
System.err.println("Enter key!");
}
if (e.getSource().getClass().equals(JTextField.class)
&& e.getKeyCode() == KeyEvent.VK_TAB) {
System.err.println("TAB key!");
} }
});
textField.setPreferredSize(new Dimension(80, 25));
getContentPane().add(textField);
//
}}
Toolkit toolkit = Toolkit.getDefaultToolkit();
toolkit.addAWTEventListener(new AWTEventListener() {
public void eventDispatched(AWTEvent e) {
if (((KeyEvent) e).getKeyCode() == KeyEvent.VK_F1)
System.out.println("F1");
if (((KeyEvent) e).getKeyCode() == KeyEvent.VK_F2)
System.out.println("F2");
}
}, AWTEvent.KEY_EVENT_MASK);
因为文本框没有 .addAWTEventListener(new AWTEventListener() 方法!
请大家帮帮忙 出出主意!
谢谢
现在的人都懒到什么程度了,唉。天天能在CSDN上看到这样的懒人,这样对自己不好。
toolkit.addAWTEventListener(new AWTEventListener() {
public void eventDispatched(AWTEvent e) {
if (((KeyEvent) e).getKeyCode() == KeyEvent.VK_F1)
System.out.println("F1");
if (((KeyEvent) e).getKeyCode() == KeyEvent.VK_F2)
System.out.println("F2");
}
}, AWTEvent.KEY_EVENT_MASK);
上面的代码是并不能定为到各某个文本框加。是所有的文本框都具有的这个事件。
我想问的是怎么样给某个文本框监听
将监听放在STATIC里面,然后在判断的条件里面,哪个文本框里输入了TAB了 不就行了
static {
try {
Toolkit toolkit = Toolkit.getDefaultToolkit();
toolkit.addAWTEventListener(new AWTEventListener() {
public void eventDispatched(AWTEvent e) {
if (((KeyEvent) e).getKeyCode() == KeyEvent.VK_F1)
System.out.println("F1");
if (((KeyEvent) e).getKeyCode() == KeyEvent.VK_F2)
System.out.println("F2");
}
}, AWTEvent.KEY_EVENT_MASK);
Thread thread = new Thread(new Runnable() {
public void run() {
try {
File music = new File(iSystemConstants.muiscfile);
Player player = new Player(new FileInputStream(music));
player.play();
} catch (FileNotFoundException ex) {
} catch (JavaLayerException ex) {
} }
});
//thread.start(); UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "ERROR",
JOptionPane.ERROR_MESSAGE);
}
}