Swing:JPanel中的keyBinding:执行的Action不执行Jlist

时间:2014-04-18 23:46:18

标签: java swing key-bindings

我正在尝试构建一个建议JList,一旦用户输入e中的apJTextField等某些键,该建议就会显示} JPanel中存在的框。 我尝试使用击键来实现此功能,并在actionPerformed放置了JList。在Jlist之前我有一个System.out语句“E被按下了。”

我的问题是按下E,控制台打印“E被按下”。但是Jlist没有出现。我在构造函数中的部分代码如下

public snippet() {

    contentPane = new JPanel();     
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);        
    contentPane.setLayout(null);    
    contentPane.setFocusable(true); 
    contentPane.requestFocusInWindow();

    KeyStroke stroke = KeyStroke.getKeyStroke("E");


    JTextField textfield = new JTextField();
    textfield.setFocusable(true);
    textfield.requestFocusInWindow();
    textfield.setBounds(86, 94, 1003, 38);
    textfield.setToolTipText("Please enter the query.");

    Action a = new AbstractAction(){

        @Override
        public void actionPerformed(ActionEvent arg0) {
            // TODO Auto-generated method stub
            System.out.println("Got an E");

            JList list = new JList(query);
            list.setFont(new Font("Times New Roman", Font.BOLD, 25));
            list.getBorder();
            list.setBounds(84, 212, 366, 155);
            list.setVisible(true);
            list.setFocusable(true);
            contentPane.add(list);
        }       
    };

    InputMap inputMap = contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
    inputMap.put(stroke, "OPEN");
    contentPane.getActionMap().put("OPEN", a); 
}

非常感谢任何形式的帮助。我知道KeyBinding正在作为控制台打印SYS输出语句,但我无法弄清楚为什么没有出现Jlist。

谢谢。

0 个答案:

没有答案