我想實現一個JTable這也在遵循以下規則:JTextField.selectAll()的作品奇怪
- 只有3'rd列的單元格可以編輯。
- 當雙擊X行中的任何單元格時,X行的第3列將開始編輯。
- 無論何時開始編輯單元格,其中的文本都會被選中。
我有一個擴展JTable的FileTable。在它的構造我有這樣的臺詞:
getColumnModel().getColumn(2).setCellEditor(new FileTableCellEditor());
addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
if (e.getClickCount() == 2){
int row = rowAtPoint(e.getPoint());
editCellAt(row, 2);
}
}
});
我FileTableCell編輯如下:
public class FileTableCellEditor extends DefaultCellEditor {
public FileTableCellEditor() {
super(new JTextField());
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
final JTextField ec = (JTextField) editorComponent;
String textValue = (String)value;
ec.setText(textValue);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
ec.selectAll();
}
});
return editorComponent;
}
}
我的問題是,當我雙擊單元格這是不是從3'rd專欄中,在第3列上編輯的文本不會突出顯示爲選定的文本。
picture http://www.nispahit.com/stack/tableNotHighlight.png
這是很奇怪的我,因爲我知道文是選擇。當我寫東西時,它會刪除之前在該單元格中的文本。它只是沒有選擇什麼。 奇怪的是,當我雙擊3'rd列單元格本身時,它確實突出顯示選擇。
picture http://www.nispahit.com/stack/tableHighlight.png
有人可以倒一些輕?
謝謝!
想要更好的幫助,請嘗試發佈[SSCCE](http://www.sscce.org) – nachokk
第二點不明確,儘管隨着您閱讀更多內容(直到剛剛完成代碼之後),才意識到,實際上應該發生在點編號2 :-) +1的問題。 –
因此,單元格是否被選中似乎有所不同 - 嘗試在開始編輯之前選擇單元格。 – Holger