# JTextArea in JTable einbetten



## Heiko80 (22. Jun 2006)

Hallo,

ich habe eine Jtable implementiert. In diese soll anstatt des einzeiligen Feldes ein mehrzeiliges Feld rein. z.B. JTextArea.

Wie kann ich das realisieren?

Ich habs zwar schon versucht, habs aber nicht hinbekommen. 
Ich hab einen eigenen Renderer implementiert und diesen von JTextArea abgeleitet. 
Diesen hab ich dan der gewünschtenSpalte zugewiesen. Leider wird die TextArea aber einfach nur über die Tabelleneinträge drübergelegt. das wollte ich aber gar nicht.Ich möchte, das anstatt des JLabels in einer Spalte eine TextaARea sthet. und die Daten die ich in die Tabelle lade sollen dann eben auch in der Area stehen.



Wer kann mir helfen??



MfG Heiko


----------



## clemson (22. Jun 2006)

ich hoffe, das hilft dir weiter:

JTableTest.java

```
package org.javaforum.y06.june.jtextarearenderer;

import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.SwingUtilities;

public class JTableTest extends JFrame
{

	private JTable table;

	public static void main(String[] args)
	{
		new JTableTest();
	}

	public JTableTest()
	{
		super();

		Runnable createAndShowGui = new Runnable()
		{

			public void run()
			{
				initCompontents();
				initFrame();
			}

		};
		SwingUtilities.invokeLater(createAndShowGui);
	}

	protected void initFrame()
	{
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		pack();
		validate();

		setVisible(true);
	}

	protected void initCompontents()
	{
		table = new JTable(new JTextAreaRendererTableModel());
		table.setRowHeight(0, 40);
		table.getColumnModel().getColumn(0).setCellEditor(new JTextAreaEditor());
		table.getColumnModel().getColumn(0).setCellRenderer(new JTextAreaRenderer());

		add(table);
	}
}
```

JTextAreaEditor.java

```
package org.javaforum.y06.june.jtextarearenderer;

import java.awt.Component;

import javax.swing.AbstractCellEditor;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.table.TableCellEditor;

public class JTextAreaEditor extends AbstractCellEditor implements TableCellEditor
{

	private JTextArea textarea = new JTextArea(5, 10);

	public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
	{
		textarea.setText(value.toString());
		return textarea;
	}

	public Object getCellEditorValue()
	{
		return textarea.getText();
	}

}
```

JTextAreaRenderer.java

```
package org.javaforum.y06.june.jtextarearenderer;

import java.awt.Component;

import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.table.TableCellRenderer;

public class JTextAreaRenderer implements TableCellRenderer
{

	private JTextArea textarea = new JTextArea(5, 10);

	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
			int row, int column)
	{
		textarea.setText(value.toString());
		return textarea;
	}

}
```

JTextAreaRendererTableModel.java

```
package org.javaforum.y06.june.jtextarearenderer;

import javax.swing.table.AbstractTableModel;

public class JTextAreaRendererTableModel extends AbstractTableModel
{

	private String value = "";

	public int getRowCount()
	{
		return 1;
	}

	@Override
	public void setValueAt(Object aValue, int rowIndex, int columnIndex)
	{
		value = aValue.toString();
	}

	public int getColumnCount()
	{
		return 1;
	}

	/**
	 * (non-Javadoc)
	 * @see javax.swing.table.TableModel#getValueAt(int, int)
	 */
	public Object getValueAt(int rowIndex, int columnIndex)
	{
		return value;
	}

	@Override
	public Class<?> getColumnClass(int columnIndex)
	{
		return String.class;
	}

	@Override
	public boolean isCellEditable(int rowIndex, int columnIndex)
	{
		return true;
	}

}
```


----------



## Heiko80 (22. Jun 2006)

Vielen Dank,

das war genau das was ich gebraucht habe!!



MfG Heiko


----------

