Hi there,
I fixed the DefaultTableCellRenderer to make the accompanied mauve tests
pass. The issues addressed here are:
- getTableCellRendererComponent must call setValue to set the value.
Subclasses may override this to special handle the value there.
- JTextField-typed values must not be handled different than others. This
must be a programming mistake, nobody would want a JTextField as _value_
in a table. Editing of table cells should be left to a TableCellEditor
instance.
2006-01-31 Roman Kennke <[EMAIL PROTECTED]>
* javax/swing/table/DefaultTableCellRenderer.java
(getTableCellRendererComponent): Moved setting of the value into
setValue(). Removed (bogus) special handling of JTextField values.
(setValue): Made ?: statement more clear by rewriting it
with if .. else.
/Roman
Index: javax/swing/table/DefaultTableCellRenderer.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/table/DefaultTableCellRenderer.java,v
retrieving revision 1.24
diff -u -r1.24 DefaultTableCellRenderer.java
--- javax/swing/table/DefaultTableCellRenderer.java 15 Jan 2006 17:41:58 -0000 1.24
+++ javax/swing/table/DefaultTableCellRenderer.java 1 Feb 2006 13:57:06 -0000
@@ -141,16 +141,7 @@
boolean hasFocus,
int row, int column)
{
- if (value != null)
- {
- if (value instanceof JTextField)
- return new JTextField(((JTextField)value).getText());
- super.setText(value.toString());
- }
- else
- // null is rendered as an empty cell.
- super.setText("");
-
+ setValue(value);
setOpaque(true);
if (table == null)
@@ -278,6 +269,10 @@
*/
protected void setValue(Object value)
{
- super.setText((value!=null) ? value.toString() : "");
+ if (value != null)
+ super.setText(value.toString());
+ else
+ // null is rendered as an empty cell.
+ super.setText("");
}
}