devxlogo

Provide Data Tip For JTable Columns

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.

See also  Why ChatGPT Is So Important Today
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist