Login | Register   
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: Java
Expertise: Intermediate
Jan 6, 2000

Provide Data Tip For JTable Columns

Cell data in a table may exceed the width of its column. It is a good, user-friendly, idea to have ToolTips appear in a cell showing the entire cell data as the user brings the mouse over the cell. This can easily be done using JTable and a few lines of code. Here's how:
 
public class TippedTable extends JTable 
{ 
public TippedTable() 
{ 
this(null, null, null); 
} 
public TippedTable(TableModel tm) 
{ 
this(tm, null, null); 
} 
public TippedTable(TableModel tm, TableColumnModel tcm) 
{ 
this(tm, tcm, null); 
} 
public TippedTable(TableModel tm, TableColumnModel tcm, ListSelectionModel lsm) 
{ 
super(tm,tcm,lsm); 
} 
public TippedTable(int numRows, int numColumns) 
{ 
this(new DefaultTableModel(numRows, numColumns)); 
} 
public TippedTable(final Vector rowData, final Vector columnNames) 
{ 
super( rowData, columnNames ); 
} 
public TippedTable(final Object[][] rowData, final Object[] columnNames) 
{ 
super( rowData, columnNames ); 
} 

public String getToolTipText(MouseEvent event) 
{ 
int row = rowAtPoint(event.getPoint()); 
int col = columnAtPoint(event.getPoint()); 
Object o = getValueAt(row,col); 
if( o == null ) 
return null; 
if( o.toString().equals("") ) 
return null; 
return o.toString(); 
} 

public Point getToolTipLocation(MouseEvent event) 
{ 
int row = rowAtPoint( event.getPoint() ); 
int col = columnAtPoint( event.getPoint() ); 
Object o = getValueAt(row,col); 
if( o == null ) 
return null; 
if( o.toString().equals("") ) 
return null; 
Point pt = getCellRect(row, col, true).getLocation(); 
pt.translate(-1,-2); 
return pt; 
} 
} 
Let's use our little class, in the method that launches the frame to hold the TippedTable:
 
JFrame frame = new JFrame("Table Example"); 
Object[][] rowData = new Object[1][3]; 
rowData[0][0]="very long data to be tipped here"; 
rowData[0][1]="If that was not tip enough try this"; 
rowData[0][2]="This is the last row of this tip, take care and good night"; 
Object[] columnNames = new Object[3]; 
for(int i=0; i<3; i++) 
{ 
columnNames[i]="Column "+i; 
} 

TippedTable tTable = new TippedTable(rowData,columnNames); 
JScrollPane jsp = new JScrollPane(tTable); 
frame.getContentPane().add(jsp); 

frame.pack(); 
frame.show();
There you have it: a ToolTip on a Table Cell with data.
Behrouz Fallahi
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap