6
我一直在學習JavaFX 2的一些內容,但是我遇到了可編輯表格單元的問題,我找不到解決方案。爲了節省粘貼了大量的代碼,我已經創建了一個包含JavaFX的文檔只有TableView中示例項目:http://docs.oracle.com/javafx/2/ui_controls/table-view.htmJava FX 2表格單元格編輯和聚焦
如果你運行了這個代碼,您看到此行爲:
- 點擊一行選擇該行。
- 單擊所選行中的單元格將單元格轉換爲文本字段,以便可以編輯該單元格。
- 單擊文本字段可以對內容進行編輯。
問題是,這是三次點擊,以達到單元格可以編輯的點。我想實現的是當創建(例如第2步)焦點中的文本字段直接切換到文本字段。
我最好的猜測就如何實現這一目標是增加textField.requestFocus()
到的startEditing()
方法的末尾:
@Override
public void startEdit() {
super.startEdit();
if (textField == null) {
createTextField();
}
setGraphic(textField);
setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
textField.selectAll();
textField.requestFocus();
}
但這不起作用。如果我將焦點偵聽器添加到文本字段中,我發現它會獲得焦點,但會再次失去焦點。在偵聽器中插入一箇中斷點似乎表明TableView在顯示文本字段之前重新獲得焦點。
因此,問題是如何在編輯開始時將注意力集中到文本字段?
謝謝烏魯克,這是固定的。看看runLater的文檔,雖然我猜測這可能會失敗,因爲它不能保證它的運行時間 - 大概它可以在表格抓取之前運行。 – wobblycogs 2012-04-26 11:02:15
我同意wobblycogs,我已經使用runlater技巧在過去幾次要求重點,它一直爲我工作,但缺乏確定性,它會繼續工作並不會給我一個溫暖,模糊感覺它。 (另一種方法是使用時間軸將焦點請求推回到後面 - 但這種方法有它自己的問題)。 – jewelsea 2012-04-26 18:10:21