2011-03-08 20 views
2

我有一個jTable,它當前顯示並允許編輯一個數據庫表,我現在試圖對添加元組進行排序。添加一行到一個jTable在downarrow底部

我想讓它自動添加一行在底部的downarrow。所以如果我在桌子的底部並點擊我的向下箭頭,下面會出現一個新的行。我只是無法弄清楚如何去做。

感謝 詹姆斯

回答

2

JTable行動處理髮生在javax.swing.plaf.basic.BasicTableUI。在你的情況下,你可能需要註冊一個新的動作SCROLL_DOWN_CHANGE_SELECTION。在動作中,檢查當前選擇==表的最後一行。

如果這不起作用,請在javax.swing.plaf.basic.BasicTableUI.Actions.actionPerformed(ActionEvent)中設置一個斷點以查看哪個操作確實執行。

1

你需要創建一個的KeyListener,並添加到您的表:

public void keyReleased(KeyEvent e) { 
    int keyCode = e.getKeyCode(); 
    if (keyCode == KeyEvent.VK_DOWN) 
     // check if selected table row = last row and if so: add new row to table model 
} 

格爾茨,
斯泰恩

+0

這會在按下向下箭頭時添加一行。您至少需要檢查是否選擇了最後一行。 – jzd 2011-03-08 12:12:01

+0

正確,但可以使用table.getSelectedRow()== table.getRowCount()-1來完成。順便說一句,我編輯了我的文章,你需要在這種情況下使用keyReleased i.o.在keyPressed。 – 2011-03-08 13:31:55

+0

你不應該使用KeyListener。 Swing被設計爲使用鍵綁定來實現這種類型的功能。 – camickr 2011-03-08 15:43:52

2

JTable具有向下箭頭鍵的默認操作。如果你想改變這種行爲,那麼你需要創建一個自定義的動作。通過使用Wrapping Actions概念來利用默認代碼,您可以輕鬆完成此操作。

您還可以查看Table Tabbing以獲取包裝Action的工作示例。你爲Action編寫的代碼會簡單得多,如下所示:

if (last row is selected) 
    add a new row to the table 

invoke the default down arrow action 
相關問題