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

ES>Здравствуйте, Аноним, Вы писали:


А>>Интересно но при вводе '(' нажимается кнопка 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();
А>>    }
А>>}

А>>



ES>у них коды одинаковые


ES>import javax.swing.*;

ES>import java.awt.event.KeyEvent;

ES>public class PrintCode {

ES> public static void main(String[] args) {
ES> System.out.println('(' + ","
ES> + Integer.toHexString((int)'(') + ","
ES> + Integer.toHexString(KeyEvent.VK_DOWN) );
ES> }
ES>}



а как решить эту проблему ??
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.