如何通过单击Jbutton触发帮助键F1操作

时间:2012-12-04 03:29:50

标签: jbutton

现在我正在研究JavaHelp内容。

基本上,第一个解决方案是,从树状菜单或节点(JTree)中选择所选功能,然后按下帮助键(F1),它将根据所选节点弹出特定的JavaHelp内容。

现在,我试图添加“帮助”按钮,用户首先需要从树状菜单或节点中选择功能,然后单击我创建的“帮助”按钮。它假设工作与第一个解决方案完全相同,但现在,它不会弹出正确的内容。

如何让“帮助”按钮触发F1键动作?这意味着当我们选择节点时,如果我们按下F1键,它已经有一个焦点n可以直接弹出,帮助按钮可能只是触发F1键动作。

我听说过doClick功能或键绑定,对此有什么想法吗?

由于

此致 Aznimah

嗨,我尝试实现键绑定,以便在用户单击“帮助”按钮时触发F1键操作。但我不知道如何设置代码来触发F1键动作。这是一些代码:

操作按钮:

final String helpIconLocation = new String("/icons/help_new.png");
        iconResource = CustomizedToolbar.class.getResource(helpIconLocation);
        icon = new ImageIcon(iconResource);
        actionButton = new JButton(icon);
        actionButton.setFocusable(false);
        actionButton.addActionListener(new JavaHelpHandler());

的ActionListener:

private class JavaHelpHandler implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent arg0) {

            Action javaHelpF1KeyAction = new AbstractAction();
            KeyStroke helpKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0);
            MainApp.getMainAppPanel().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
                    helpKeyStroke, "F1");
            MainApp.getMainAppPanel().getActionMap().put("F1", javaHelpF1KeyAction);

        }

    }


    private class AbstractAction implements ActionListener, Action {

        @Override
        public void actionPerformed(ActionEvent e) {
            // TO display popup javaHelp content
            HelpSystemUtil.getInstance().enableHelpFromFocus(actionButton);
        }

        @Override
        public void addPropertyChangeListener(PropertyChangeListener listener) {
            // TODO Auto-generated method stub

        }

        @Override
        public Object getValue(String key) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public boolean isEnabled() {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public void putValue(String key, Object value) {
            // TODO Auto-generated method stub

        }

        @Override
        public void removePropertyChangeListener(PropertyChangeListener listener) {
            // TODO Auto-generated method stub

        }

        @Override
        public void setEnabled(boolean b) {
            // TODO Auto-generated method stub

        }

    }

如何设置actionMap来触发F1键动作?真的需要帮助

感谢

1 个答案:

答案 0 :(得分:1)

您可以做的最好的方法是创建一个Key Listener。

KeyListener

有几种方法可以做到这一点。这是一个:


    yourComponent.addKeyListener(new KeyAdapter () { 
         @Override
         public void keyPressed(KeyEvent e) {

              if ( e == YOUR_KEY_CODE ) {
                   // Do something
              }

         }
    });

无论如何,F1的关键代码是112

相关问题