簡體   English   中英

添加全局鍵盤快捷鍵以動態添加按鈕

[英]Adding a global keyboard shorcut to dynamically added buttons

設置動態添加按鈕的快捷方式時遇到一些困難。 按鈕是動態添加的面板。 我想為這些按鈕添加鍵盤快捷鍵,如下所示:

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

按鈕是通過算法添加的,所以我不知道它們中會有多少(最小0,最大5)。 我想用Global(在整個面板中工作)鍵盤快捷鍵調用這些按鈕。 我想知道如何實現這一點,當我的按鈕上的文本動態地像這樣:

getNewAmountQueryButton(label)

這使得:

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

我嘗試添加keylistener,但只有當我專注於按鈕時它才有效:

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();
                    }
                }
            });
    });

你知道我怎么能這樣做嗎? 我想將監聽器添加到頂級面板,但是因為我使用了model.setAmount(model.getAmount().add(label)); 刷新一些textField是不可能的,因為缺少這個label參數。

任何想法? 提前致謝!

使用Action來封裝每個按鈕的行為。 您可以指定所需的MNEMONIC_KEY ,如圖所示在這里 ,你可以添加綁定到ACCELERATOR_KEY ,如圖所示這里

建議您使用Key Bindings

基本上,他們不會遇到與KeyListeners相同的焦點問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM