2011-05-30 50 views
0

我的jlist是一個單元格是正方形並且大小固定的,並且查看端口用它們填充的,所以列的數量(和我猜測的行數)實際上可以改變。任何人都知道如何使Jlist默認移動單元焦點行爲更改?

我的代碼做,這是相當複雜的:

http://code.google.com/p/bookjar-utils/source/browse/BookJar-utils/src/util/swing/components/ImageList.java

我想要做的是允許使用箭頭鍵不同的鍵盤動作 - 而不是隻用↑和↓鍵上下移動如果所選單元格與視口的西邊或東邊相交,則行也允許←和→。

我應該只是計算有多少個單元格適合「行」,並添加一個箭頭的鍵盤記錄器,當在邊緣時,默認行爲似乎什麼都不做?

對於這個問題,原始行爲定義在哪裏?如果不在該行的邊緣,則按鍵和鍵允許連續移動。

回答

3

在Swing中,每個小部件都有自己的UI類來控制其行爲。 LookAndFeel管理小部件和UI之間的這些鏈接(architecture overview)。

所以恕我直言,做你問什麼是正確的地方是延長BasicTableUI和覆蓋,它定義了鍵盤操作的部件ActionMap中的方法,用自己的實現替換一些行動:

class MyTableUI extends BasicTableUI { 
    ... 

    @Override 
    protected void installKeyboardActions() { 
     super.installKeyboardActions(); 
     final ActionMap actionMap = getTable().getActionMap(); 
     actionMap.put(NEXT_ROW, 
      new MyNewRowSelectionAction(NEXT_ROW, actionMap.get(NEXT_ROW))); 
     ... 

注ActionMap的鍵在BasicTableUI.Actions中是私有的,所以它們需要被複制。

+0

謝謝!信息答案。 – i30817 2011-05-30 23:02:38

相關問題