+ Embedding a JTextArea and ImageIcon in a JTable cell Joris Van den Bogaert JTextAreaTableExample.java: import javax.swing.border.*; import javax.swing.event.*; import javax.swing.table.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import java.awt.*; public class JTextAreaTableExample extends JFrame { public JTextAreaTableExample() { super( "JTextAreaTableExample Example" ); DefaultTableModel dtm = new DefaultTableModel() { // make first cell uneditable public boolean isCellEditable(int row, int column) { return !(column == 0); } }; dtm.setDataVector(new Object[][]{{ "JTextArea1", "This is a testnon long linesn" }, { "JTextArea2", "Hello, world!" }}, new Object[]{ "String","JTextArea"}); JTable table = new JTable(dtm); table.getColumn("JTextArea").setCellRenderer(new TextAreaRenderer()); table.getColumn("JTextArea").setCellEditor(new TextAreaEditor()); table.setRowHeight(80); JScrollPane scroll = new JScrollPane(table); getContentPane().add(scroll); setSize( 400, 250 ); setVisible(true); } public static void main(String[] args) { JTextAreaTableExample frame = new JTextAreaTableExample(); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } } class TextAreaRenderer extends JScrollPane implements TableCellRenderer { JTextArea textarea; public TextAreaRenderer() { textarea = new JTextArea(); textarea.setLineWrap(true); textarea.setWrapStyleWord(true); textarea.setBorder(new TitledBorder("This is a JTextArea")); JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.add(BorderLayout.WEST, new JLabel(new ImageIcon("TrafficRed.gif"))); panel.add(BorderLayout.CENTER, textarea); getViewport().add(panel); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (isSelected) { setForeground(table.getSelectionForeground()); setBackground(table.getSelectionBackground()); textarea.setForeground(table.getSelectionForeground()); textarea.setBackground(table.getSelectionBackground()); } else { setForeground(table.getForeground()); setBackground(table.getBackground()); textarea.setForeground(table.getForeground()); textarea.setBackground(table.getBackground()); } textarea.setText((String) value); textarea.setCaretPosition(0); return this; } } class TextAreaEditor extends DefaultCellEditor { protected JScrollPane scrollpane; protected JTextArea textarea; public TextAreaEditor() { super(new JCheckBox()); scrollpane = new JScrollPane(); textarea = new JTextArea(); textarea.setLineWrap(true); textarea.setWrapStyleWord(true); textarea.setBorder(new TitledBorder("This is a JTextArea")); JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.add(BorderLayout.WEST, new JLabel(new ImageIcon("TrafficRed.gif"))); panel.add(BorderLayout.CENTER, textarea); scrollpane.getViewport().add(panel); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { textarea.setText((String) value); return scrollpane; } public Object getCellEditorValue() { return textarea.getText(); } } Image used:
Embedding a JTextArea and ImageIcon in a JTable cell
Joris Van den BogaertJTextAreaTableExample.java:
Image used:

You might also like
Force the JScrollPane to scroll to the...
There are three steps to this: 1. Listen for focus events coming from the components that you want to...
Preventing a JInternalFrame from being...
You can subclass the protected class BorderListener that is defined in BasicInternalFrameUI and provide...
Implementing a mouseover effect with...
Add a MouseListener to your JButton and code the desired behaviour in mouseEntered and mouseExited. This...