0

動的に追加されたボタンへのショートカットの設定に問題があります。ボタンは動的に追加されたパネルにあります。次のように、これらのボタンにキーボード ショートカットを追加します。

ctrl+1 -> button1
ctrl+2 -> button2
etc.

ボタンはアルゴリズムによって追加されるため、ボタンの数はわかりません (最小 0、最大 5)。これらのボタンをグローバル (パネル全体で動作する) キーボード ショートカットで呼び出したいと思います。ボタンのテキストが次のように動的に作成されている場合、これをどのように達成するのか疑問に思っています:

getNewAmountQueryButton(label)

これにより、次のようになります。

private JButton getNewAmountQueryButton(final Decimal label) {
    JButton temp = new JButton(label.toString());
    ...

キーリスナーを追加しようとしましたが、ボタンにフォーカスがある場合にのみ機能します:

button.addKeyListener(new KeyAdapter() {

        @Override
        public void keyPressed(final KeyEvent e) {
                @Override
                public void run() {
                    if ((e.getKeyCode() == getKeyCode()) && ((e.getModifiers() & InputEvent.CTRL_MASK) != 0)) {
                        model.setAmount(model.getAmount().add(label));
                        field().selectAll();
                        refreshDisplay();
                    }
                }
            });
    });

どうすればこれができるか知っていますか?最上位パネルにリスナーを追加したかったのですが、いくつかの textField を更新するために使用しているため、このパラメーターmodel.setAmount(model.getAmount().add(label));がないため不可能です。label

何か案が?前もって感謝します!

4

2 に答える 2

1

Key Bindingsを使用することをお勧めします。

基本的に、彼らは同じフォーカスの問題に悩まされることはありませんKeyListeners

于 2013-04-23T10:16:11.010 に答える