2011-03-01 60 views
0

我注意到,只有按Tab鍵時,我纔可以箭頭移動我的JTable對象的行選擇。是否可以在通過鼠標單擊進行行選擇之後使用箭頭(而不是使用TAB)?如何啓用使用箭頭鍵在JTable中移動行選擇?

+0

您可以張貼相關的代碼的方法?當你試圖遍歷時,你確定你的桌子是焦點嗎? – justkt 2011-03-01 17:47:27

+0

表格可以通過從一個組件切換到表格或通過單擊表格中的單元格來獲得焦點。一旦表格有焦點,箭頭鍵將起作用。所以我不明白你爲什麼說它在點擊鼠標後不起作用。張貼您的SSCCE(http://sscce.org)來證明問題。 – camickr 2011-03-01 19:08:07

回答

1

要使箭頭鍵更改行選擇,JTable必須具有焦點。按tab鍵更改焦點到頁面上的下一個(或第一個)「可聚焦」組件,該組件可能是JTable中的一個子組件。

要使其在變爲可見時自動聚焦,請添加一個ComponentListener,並使用實現的componentShown(...)方法調用JTable的requestFocusInWindow()方法。

是否有可能通過點擊鼠標行選擇後使用箭頭(而不是使用TAB)

是;如果您在一行上單擊鼠標,也應該關注該行,並允許您使用箭頭鍵。

更新:修正用於獲取輸入焦點,由於camickr(見註釋)

+0

JTable對象沒有getFocus()方法。當我點擊一行時,我不能使用箭頭鍵。我只能用TAB – latata 2011-03-02 00:10:54

+1

@latata oops,我更正了方法名(並鏈接到javadoc) - 使用requestFocus()。如果我運行http://download.oracle.com/javase/tutorial/uiswing/examples/components/SimpleTableDemoProject/src/components/SimpleTableDemo.java並單擊表中的任何一行,我會得到預期的結果:即方向鍵一旦細胞集中,將會改變選擇的行。在創建它之後,您是否使用任何非默認設置來配置JTable? – Chadwick 2011-03-02 02:34:12

+0

reqestFocus()不是正確的使用方法。請閱讀該方法的API,建議您使用requestFocusInWindow()。 – camickr 2011-03-02 03:28:35

相關問題