Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีตั้งค่า Tooltip ให้แต่ละ Column ของ JTableHeader ใน Java

JTableHeader เป็น subclass ของ JComponent เมื่อสร้าง JTable object constructor จะสร้าง JTableHeader object ใหม่เพื่อ manage table component's header JTable มีเมธอด setTableHeader() สร้าง JTableHeader object และ getTableHeader() คืน reference ของ JTableHeader เราสามารถตั้งค่า tooltip text ให้แต่ละ column ของ JTableHeader ได้โดย override เมธอด getToolTipText() ของคลาส JTableHeader

ตัวอย่าง

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);
    }
}

// Implementation code to set a tooltip text to each column of 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;
    }
}

Output

วิธีตั้งค่า Tooltip ให้แต่ละ Column ของ JTableHeader ใน Java