嗨那裏我正在開發一個Java應用程序(在Mac中)。當用戶按下箭頭時,我想讓它做點什麼。當按下箭頭鍵綁定沒有響應
我的代碼如下:
public class Main {
static JScrollPane scrollPane;
public static void main(String[] args) {
JFrame f = new JFrame();
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
f.setBounds(0, 0, dim.width, dim.height);
StandartPanel p = new StandartPanel();
f.add(p);
JToolBar tb = new JToolBar();
tb.add(new JButton("button"));
f.add(tb);
f.setVisible(true);
}
}
它簡單地創建一個JFrame,並在其中一個StandartPanel並且具有按鈕JToolBar中提出的程序。
的StandartPanel的代碼如下:
public class StandartPanel extends JPanel {
public StandartPanel() {
for(int i = 0; i < 10; i++)
this.add(new JLabel("Jlabel number: " + i));
this.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0), "forward");
this.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_D, 0), "forward");
this.getActionMap().put("forward", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("pressed");
}
});
}
}
for循環是並不重要,重要的是它打印「按下」按下d或向下時。
當我實際按D鍵時會打印「按下」,但是當我點擊它時什麼也不做。
在嘗試了一些事情後,我發現如果不是向JToolBar添加JButton,而是添加JLabel,它會起作用(如果我不添加任何東西,它也可以)。
因此,向JToolBar添加JButton會以某種方式停止使用向下按鈕的鍵綁定。
任何想法,爲什麼會發生以及如何修復?
謝謝!
Hava看看[this](http://stackoverflow.com/a/17049479/4857909) –
看看http://stackoverflow.com/questions/9973190/keyadapter-listener-works-in-windows-not-on-mac –
@GeorgiPenev它也不適用於我(Windows)。他也已經使用KeyBindings,而不是KeyListener。 –