我正在使用Java,我正在尝试使JTable中的单元格可编辑.我的类实现的TableModel和延伸AbstractTableModel上(这样我可以使用的方法fireTableCellUpdated(rowIndex, columnIndex))
,我已经实现的方法isCellEditable()
和setValueAt()
我表示表中的单个小区作为类细胞的对象.
现在这是我的问题:单元格已经可编辑了,当我点击它时,光标会出现在单元格中,但是,单元格中还会出现一个字符串,如下所示:Cell@1e63e3d
.我删除了这个字符串,并在单元格中放入了我要放置的值,然后单击Enter,它工作正常.但我希望当我点击那里的单元格时什么也不显示,一个空字符串,而不是Cell@1e63e3d
.我不知道如何将此空字符串设置为默认值和位置.
我的Cell类存储有关单元格的信息(特征),如单元格的颜色,以及它作为实例变量的值.
如果您需要更多信息,请告诉我.
您是否设置了TableCellRenderer
和TableCellEditor
你的JTable
?
对于显示单元格,TableCellRenderer
用于从中呈现位置的内容TableModel
.默认情况下,它将使用该位置中的toString
方法Object
,以便解释Cell@1e63e3d
在单元格中显示的内容 - 这是在对象toString
上调用方法的结果Cell
.
通过编写自定义单元格渲染器(实现的类TableCellRenderer
),您将能够使用该方法返回Component
要用于显示Cell
对象的a getTableCellRendererComponent
.在您的情况下,您可能希望子类化JLabel
实现TableCellRenderer
,并将设置标签的内容以反映Cell
对象的内容.
至于编辑单元格,从中想要编辑单元格时TableCellEditor
接收.在将返回其用于编辑单元格内容(使用)方法.Object
TableModel
JTable
TableCellEditor
Component
Object
getTableCellEditorComponent
在你提供的情况下,我认为制作一个JTextField
实现TableCellEditor
界面的人将能够为你完成这项工作.覆盖时getTableCellEditorComponent
,检查您是否有Cell
对象的实例(即object instanceof Cell
),如果是这种情况,请初始化您JTextField
的内容以包含Cell
要显示或编辑的对象的内容.
推荐阅读:我发现IBM developerWorks的Swing JTable组件文章中的Rendering单元非常有助于学习如何处理JTable
s及其单元格渲染和编辑功能.特别是,创建自定义渲染器和编辑表格单元部分可能是有意义的.