0

現在、JavaHelp コンテンツに取り組んでいます。

基本的に、最初のソリューションでは、ツリー メニューまたはノード (JTree) から選択した機能を選択し、ヘルプ キー (F1) を押すと、選択したノードに基づいて特定の JavaHelp コンテンツがポップアップ表示されます。

現在、ヘルプ ボタンを追加しようとしています。ユーザーはまず、ツリー メニューまたはノードから機能を選択し、作成したヘルプ ボタンをクリックする必要があります。最初のソリューションとまったく同じように機能すると思われますが、現在、正しいコンテンツがポップアップしません。

F1 キー アクションをトリガーするヘルプ ボタンを作成するにはどうすればよいですか? つまり、ノードを選択すると、すでにフォーカスがあり、F1 キーを押すと直接ポップアップできます。ヘルプ ボタンは、おそらく F1 キー アクションをトリガーするだけです。

doClick 関数またはキー バインドについて聞いたことがありますが、これに関するアイデアはありますか?

ありがとう

よろしく、アズニマ

こんにちは、ユーザーが [ヘルプ] ボタンをクリックしたときに 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());

アクションリスナー:

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

        }

    }

F1キーアクションをトリガーするようにactionMapを設定するにはどうすればよいですか? これについて本当に助けが必要です

ありがとう

4

1 に答える 1

1

最善の方法は、キー リスナーを作成することです。

キーリスナー

これを行うにはいくつかの方法があります。ここに1つあります:

    yourComponent.addKeyListener(新しい KeyAdapter () {
         @オーバーライド
         public void keyPressed(KeyEvent e) {

              if ( e == YOUR_KEY_CODE ) {
                   // 何かをする
              }

         }
    });

とにかく、F1のキーコードは112です

于 2012-12-04T03:38:39.397 に答える