2010-01-18 95 views
0

當選擇給定的小區,從而允許更多的空間以查看單元格的內容的期望的行爲類似於在Excel中提供的鏡像文字編輯字段鏡編輯。我有一個有5列和n行的JTable。第2列保存的表達式可以是任意長的,因此我想提供一個單獨的JTextField來處理每行表達式單元格的內容。其他字段可以在表格中直接編輯。但是,當用戶單擊第2列中的字段時,我想將它們發送到文本字段。單元格中預先存在的任何內容應該出現在文本字段中,並且文本字段中的其他編輯應該反映在表格單元格中。同樣,如果有人在單元上雙擊並直接編輯它,我想要在文本字段中反映這些更改。因此,用戶可以選擇在任一空間進行編輯,並且兩者都被更新。理想情況下,它們每次擊鍵都會更新,但在返回時更新是可以接受的。如何跨越表格單元格,文本字段

所以,我得到了JTable,TableModel,TableModelListener,JTextField,ListSelectionListener和AbstractAction,它們一起工作以提供上述大部分功能。我錯過了直接表格單元格編輯到文本字段和每個按鍵更新的反映。

他們的想法是如何最好地構造這種行爲?

回答

2

好吧,如果你想從表獲取數據細胞,那麼你的代碼添加到您的TableModel的setValueAt()函數,當用戶改變在一個可編輯單元格的內容應該運行。我不認爲這會更新按鍵。

如果你想文本框中將數據移動到表格單元使用這樣的代碼

myJTextField.getDocument().addDocumentListener(new MyDocumentListener()); 

哪裏MyDocumentListenerjavax.swing.event.DocumentListener接口的實現

將讓你每按鍵更新從框到表。但相反,這有點棘手。

有你也許可以去這樣做

1)一鍵偵聽器添加到表兩種方式,當用戶開始輸入檢查,看看錶元素是活動的,並攔截鍵擊他們鍵入。雖然這有點亂。

2)另一種選擇可能是試圖抓住或更換該表是使用真正讓用戶進行更改的組件。我認爲,JTable實際上允許你改變編輯器組件,如果你四處挖掘。

+0

謝謝乍得。使用DocumentListener並設置DefaultCellEditor爲我提供了所需的所有功能。 – AlexanderPico 2010-01-19 07:27:25

相關問題