Computer >> Máy Tính >  >> Lập trình >> Java

Làm cách nào để đặt chú giải công cụ cho mỗi cột của JTableHeader trong Java?

A JTableHeader là một lớp con của JComponent lớp, Khi chúng ta tạo một đối tượng JTable, hàm tạo sẽ tạo một đối tượng JTableHeader mới để quản lý tiêu đề của thành phần bảng . JTable cung cấp setTableHeader () phương thức thiết lập đối tượng JTableHeader của thành phần tiêu đề bảng và getTableHeader () phương thức trả về một tham chiếu đến đối tượng JTableHeader của thành phần tiêu đề bảng. Chúng tôi có thể đặt văn bản chú giải công cụ cho mỗi cột của JTableHeader bằng cách ghi đè getToolTipText () phương thức của lớp 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);
   }
}
// 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;
   }
}

Đầu ra

Làm cách nào để đặt chú giải công cụ cho mỗi cột của JTableHeader trong Java?