2015-12-25 38 views
0

我正在使用Java和ImageJ處理項目。 我有一個小問題,使以下工作正常:按下JButton而不是鍵盤

我有一個JButton噸。當我點擊t時,它應該與我剛按下鍵盤上的「T」一樣。 當您在ImageJ中拖出ROI並按下鍵盤上的「T」按鈕時,原因是(對於那些熟悉ImageJ的人),它會打開區域管理器並將新鮮拖出的ROI添加到管理器。 因此,當我點擊t(它對我而言有點太複雜)時,它不是將它編碼到點上,而是將ROI添加到區域管理器,t按鈕應該執行某種按下「T」的鍵盤事件我,當我點擊JButton。

+2

算我那些誰仍然困惑之中,所以如果你不要很快得到一個體面的答案,考慮澄清你的問題,並顯示代碼。請看[如何提出一個好問題](http://stackoverflow.com/help/how-to-ask)以獲得很好的建議。另外,你可能會想擺脫''請不要讓你的編碼太複雜......''這一行。 1)本網站用於回答問題,而不是獲取代碼,以及2)本網站由志願者組成,因此您不希望限制您可能獲得的任何答案。如果在答案或評論中有什麼讓你感到困惑,那就問問。 –

+0

*「請不要讓你的編碼太複雜。」*請提出問題。爲了儘快提供更好的幫助,請發佈[MCVE]或[簡短,獨立,正確的示例](http://www.sscce.org/)。 –

回答

0

不知道ImageJ是什麼,但由於您使用的是JButton,我猜它是基於Swing。在Swing中,你會使用Key Bindings。那就是你創建一個Action,可以在你點擊按鈕或使用鍵盤時使用。

開始行動:

Action tAction = new AbstractAction() 
{ 
    @Override 
    public void actionPerford(ActionEvent e) 
    { 
     // do something 
    } 
} 

使用一個JButton:

JButton button = new JButton(tAction); 
button.setText("some action"); 

使用按鍵綁定:

button.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("T"), "tAction"); 
button.getActionMap().put("tAction", tAction); 
+0

謝謝,但這沒有用。我必須把它放在不同的班級嗎?因爲當我實施了Action並且之後我實現了這些鍵綁定時,關鍵字將如何知道他們必須執行代碼,這是寫在他們上面的?對不起,我可憐的英語 –

+0

@MaxRoth,'鍵將如何知道他們必須執行代碼,' - 因爲您使用InputMap/ActionMap將KeyStroke綁定到Action。在上面的例子中,'tAction'綁定到'T KeyStroke'。 – camickr

+0

'當我點擊按鈕,它就像我按下了我的鍵盤上的「T」。 - - 檢查出http://stackoverflow.com/questions/23375276/attaching-a-single-action-listener-to -all-buttons/23375436#23375436一個完整的例子。 – camickr