有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JPanel中的java Swing:keyBinding:执行的操作不执行Jlist

我试图构建一个建议JList,一旦用户在JPanel中的JTextField框中键入某些键,如eap等,该建议就可见。 我尝试使用击键来实现这个功能,并在actionPerformed中放置了JList。在Jlist之前,我有一个系统。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在console打印SYS out语句时起作用,但我无法理解为什么Jlist没有出现

多谢各位


共 (0) 个答案