Здравствуйте, Аноним, Вы писали:
А>Интересно но при вводе '(' нажимается кнопка Down
А>не знаю почему
А>
А>import javax.swing.*;
А>import java.awt.*;
А>import java.awt.event.ActionEvent;
А>import java.awt.event.KeyEvent;
А>public class Test extends JFrame {
А> JPanel jPanel1 = new JPanel();
А> JButton jButton5 = new JButton("UP");
А> JButton jButton6 = new JButton("Down");
А> JTextArea t1 = new JTextArea(5, 25);
А> JScrollPane sp = new JScrollPane(t1);
А> public Test() {
А> t1.setFocusable(true);
А> t1.setEditable(false);
А> JComponent c = (JComponent) getContentPane();
А> InputMap inputMap = c.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
А> keyRegistry(c, inputMap, '(');
А> keyRegistry(c, inputMap, KeyEvent.VK_UP, jButton5);
А> keyRegistry(c, inputMap, KeyEvent.VK_DOWN, jButton6);
А> jPanel1.add(sp);
А> jPanel1.add(jButton5);
А> jPanel1.add(jButton6);
А> c.add(jPanel1, BorderLayout.CENTER);
А> c.setFocusable(true);
А> }
А> public void keyRegistry(JComponent c1, InputMap inputMap1, char ch) {
А> inputMap1.put(KeyStroke.getKeyStroke(ch), "alph" + (int) ch);
А> c1.getActionMap().put("alph" + (int) ch, new MyAbstractAction1(ch));
А> }
А> public void keyRegistry(JComponent c1, InputMap inputMap1, int ch, JButton jb) {
А> inputMap1.put(KeyStroke.getKeyStroke(ch, 0), "alph" + ch);
А> c1.getActionMap().put("alph" + (int) ch, new MyAbstractAction(jb));
А> }
А> private class MyAbstractAction extends AbstractAction {
А> private JButton jb;
А> public MyAbstractAction(JButton jb) {
А> this.jb = jb;
А> }
А> public void actionPerformed(ActionEvent e) {
А> jb.doClick();
А> }
А> }
А> private class MyAbstractAction1 extends AbstractAction {
А> private char ch = ' ';
А> public MyAbstractAction1(char ch) {
А> this.ch = ch;
А> }
А> public void actionPerformed(ActionEvent e) {
А> t1.append("" + (char) ch);
А> }
А> }
А> public static void main(String args[]) {
А> Test frame = new Test();
А> frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
А> frame.setBounds(200, 200, 300, 200);
А> frame.show();
А> }
А>}
А>
у них коды одинаковые
import javax.swing.*;
import java.awt.event.KeyEvent;
public class PrintCode {
public static void main(String[] args) {
System.out.println('(' + ","
+ Integer.toHexString((int)'(') + ","
+ Integer.toHexString(KeyEvent.VK_DOWN) );
}
}