Re[9]: Работа с клавиатурой в java
От: ElectricalStorm Россия  
Дата: 15.03.04 09:31
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Интересно но при вводе '(' нажимается кнопка 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) );
}
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.