[英]Adding key and mouse listener
我試圖將按鍵和鼠標偵聽器添加到JFrame中,但它不起作用,而且我發現JFrame無法獲得焦點。 我有一個功能,可以在整個圖像尺寸中添加鼠標和按鍵監聽器的地方加載緩沖圖像。
public void imageloader(BufferedImage image) throws InterruptedException {
// frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension dimension = new Dimension(image.getWidth(), image.getHeight());
setSize(200, 100);
setVisible(true);
label.removeAll(); //label is Jlabel
label.setIcon(new ImageIcon(image));
frame.setSize(dimension);
label.revalidate();
JScrollPane pane = new JScrollPane(label,
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
frame.getContentPane().add(pane);
frame.setSize(dimension);
// frame.setVisible(true);
}
如何在不移動此功能部件的情況下將鼠標和按鍵偵聽器添加到此圖像框中?
使用KeyBindings代替KeyListener ,類似示例的示例在這里
這樣做的原因是Swing如何處理事件。 您需要一個具有焦點的小部件以使KeyListener
起作用-沒有焦點,任何KeyListener
都將被忽略(否則,鍵入將添加到UI中的所有TextField
,而不是僅添加具有焦點的那個)。
原始的KeyBindings
API不在乎焦點-如果沒有子窗口處理該事件,則將調用偵聽器。
將MouseListener添加到標簽。 將按鍵綁定用於按鍵事件。
我使用分層窗格解決了問題。 我用一個窗格顯示緩沖的圖像,用下一個窗格偵聽“鼠標”和“鍵盤”事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.