views:

26

answers:

0

The derived classes I am using

public class TextAreaRenderer extends JTextArea
    implements TableCellRenderer {

    public TextAreaRenderer() {
        setLineWrap(true);
        setWrapStyleWord(true);
    }

      public Component getTableCellRendererComponent(JTable jTable,
              Object obj, boolean isSelected, boolean hasFocus, int row,
              int column) {
            setText((String)obj);
            int height_wanted = (int)getPreferredSize().getHeight() + 10;
            if (height_wanted != rootJTable.getRowHeight(row))
                rootJTable.setRowHeight(row, height_wanted);
            return this;
          }

}

class TextEditor extends AbstractCellEditor implements TableCellEditor
{

      protected JTextArea ta;
      String txt;

      public TextEditor()
      {
            ta = new JTextArea();
      }
      //Implement the one CellEditor method that AbstractCellEditor doesn't.
      public Object getCellEditorValue()
      {
        return ta.getText();
      }

      //      Implement the one method defined by TableCellEditor.
      public Component getTableCellEditorComponent(javax.swing.JTable table, Object value,boolean isSelected, int row, int column)
      {
            txt = value.toString();
            ta.setText(txt);
            ta.setLineWrap(true);
            return new JScrollPane(ta);

      }

      public boolean isCellEditable(EventObject anEvent)
      {
            return true;
      }

}

Set column renderer and editor

                    rootJTable.getColumnModel().getColumn(1).setCellRenderer(new TextAreaRenderer());
                rootJTable.getColumnModel().getColumn(1).setCellEditor(new TextEditor());