esuslogo
 [To advertise Java(tm) Events here, contact joris@esus.com!]
banner

Java™
by example!






New @ Esus.com


  gb  In-house search engine for better results!

  gb  Get updates with the esus.com
newsletter!









  Home 
 Browse Categories 
 Ask a Java Question 
 Help 
  For Java Tips & Tricks, subscribe to the esus.com newsletter!
Search Java Q&A, Links, API's:   adv 

How do I create a JTable with multiline cells
Courtesy of Nobuo Tamemasa (http://www2.gol.com/users/tame/swing/examples/JTableExamples1.html)





MultiLineCellExample.java:


import javax.swing.*;
import javax.swing.table.*;
import javax.swing.border.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;

/**
* @version 1.0 11/09/98
*/
public class MultiLineCellExample extends JFrame {
MultiLineCellExample() {
super( "Multi-Line Cell Example" );

DefaultTableModel dm = new DefaultTableModel() {
public Class getColumnClass(int columnIndex) {
return String.class;
}
};
dm.setDataVector(new Object[][]{{"a\na","b\nb","c\nc"},
{"A\nA","B\nB","C\nC"}},
new Object[]{"1","2","3"});

JTable table = new JTable( dm );

int lines = 2;
table.setRowHeight( table.getRowHeight() * lines);

//
// table.setRowHeight(0);
//
// I got "java.lang.IllegalArgumentException: New row height less than 1"
//
table.setDefaultRenderer(String.class, new MultiLineCellRenderer());
JScrollPane scroll = new JScrollPane( table );
getContentPane().add( scroll );
setSize( 400, 130 );
setVisible(true);
}

public static void main(String[] args) {
MultiLineCellExample frame = new MultiLineCellExample();
frame.addWindowListener( new WindowAdapter() {
public void windowClosing( WindowEvent e ) {
System.exit(0);
}
});
}
}






import javax.swing.*;
import javax.swing.table.*;
import javax.swing.border.*;
import java.awt.*;

/**
* @version 1.0 11/09/98
*/

public class MultiLineCellRenderer extends JTextArea implements TableCellRenderer {

public MultiLineCellRenderer() {
setLineWrap(true);
setWrapStyleWord(true);
setOpaque(true);
}

public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (isSelected) {
setForeground(table.getSelectionForeground());
setBackground(table.getSelectionBackground());
} else {
setForeground(table.getForeground());
setBackground(table.getBackground());
}
setFont(table.getFont());
if (hasFocus) {
setBorder( UIManager.getBorder("Table.focusCellHighlightBorder") );
if (table.isCellEditable(row, column)) {
setForeground( UIManager.getColor("Table.focusCellForeground") );
setBackground( UIManager.getColor("Table.focusCellBackground") );
}
} else {
setBorder(new EmptyBorder(1, 2, 1, 2));
}
setText((value == null) ? "" : value.toString());
return this;
}
}




Further Information
Author of answer:

Comments to this answer are only viewable by members. Login or become a member!





Terms of Service | Privacy Policy | Contact

Copyright © 2000-2003 Esus.com - All Rights Reserved 
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. Esus.com is independent of Sun Microsystems, Inc. All other trademarks are the sole property of their respective owners.