Java tutorial
import java.awt.Component; import javax.swing.JComponent; import javax.swing.JOptionPane; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; public class Main { public static void main(String[] args) { JTable t = new JTable(new TimesTableModel()); t.setDefaultRenderer(Object.class, new TimesTableRenderer()); JOptionPane.showMessageDialog(null, t); } } class TimesTableRenderer extends DefaultTableCellRenderer { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); JComponent jc = (JComponent) c; jc.setToolTipText((row + 1) + "x" + (column + 1) + "=" + ((row + 1) * (column + 1))); return jc; } } class TimesTableModel extends DefaultTableModel { @Override public int getColumnCount() { return 7; } @Override public int getRowCount() { return 5; } @Override public Object getValueAt(int row, int column) { return new Integer((row + 1) * (column + 1)); } }