JTableHeader là một lớp con của JComponent, khi tạo đối tượng JTable, constructor tạo mới JTableHeader để quản lý header bảng. JTable cung cấp phương thức setTableHeader() thiết lập JTableHeader và getTableHeader() trả về tham chiếu đến JTableHeader. Chúng ta có thể đặt tooltip cho từng cột JTableHeader bằng cách ghi đè phương thức getToolTipText() của JTableHeader.
Ví dụ
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class JTableHeaderToolTipTest extends JPanel {
private DefaultTableModel dmodel;
private JTable table;
private JScrollPane jsp;
public JTableHeaderToolTipTest() {
setLayout(new BorderLayout());
String[] headers = {"Name", "Age", "Contact Number", "City"};
String[] toolTips = {"Name of Emp", "Age of Emp", "Contact Number of Emp", "City of Emp"};
dmodel = new DefaultTableModel(headers, 4);
table = new JTable(dmodel);
ToolTipHeader tooltipHeader = new ToolTipHeader(table.getColumnModel());
tooltipHeader.setToolTipStrings(toolTips);
table.setTableHeader(tooltipHeader);
jsp = new JScrollPane(table);
add(jsp, BorderLayout.CENTER);
}
public static void main(String[] args) {
JFrame frame = new JFrame("JTableHeaderToolTip Test");
frame.getContentPane().add(new JTableHeaderToolTipTest(), BorderLayout.CENTER);
frame.setSize(400, 250);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
// Triển khai code đặt tooltip cho từng cột JTableHeader
class ToolTipHeader extends JTableHeader {
String[] toolTips;
public ToolTipHeader(TableColumnModel model) {
super(model);
}
public String getToolTipText(MouseEvent e) {
int col = columnAtPoint(e.getPoint());
int modelCol = getTable().convertColumnIndexToModel(col);
String retStr;
try {
retStr = toolTips[modelCol];
} catch (NullPointerException ex) {
retStr = "";
} catch (ArrayIndexOutOfBoundsException ex) {
retStr = "";
}
if (retStr.length() < 1) {
retStr = super.getToolTipText(e);
}
return retStr;
}
public void setToolTipStrings(String[] toolTips) {
this.toolTips = toolTips;
}
}
Kết quả
