首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JTableHeader的工具提示没有显示其列的宽度

JTableHeader的工具提示没有显示其列的宽度
EN

Stack Overflow用户
提问于 2016-07-26 12:15:11
回答 2查看 245关注 0票数 0

我正在尝试使我的JTableHeader的工具提示显示它所属的列的宽度,但它不起作用。工具提示没有显示。

这是我的JTableHeader

代码语言:javascript
复制
myTable.setModel(new DefaultTableModel(new Object[][] {{ label1, label2, label3, label4} }, 
new String[] { "foo", "bar", "foo bar", "bar foo" }));

final JTableHeader header = new TableHeaderTooltipWidth(myTable.getColumnModel());
header.setReorderingAllowed(false); 
header.setResizingAllowed(true);

TableHeaderTooltipWidthJTableHeader的子类,在读取官方教程如何使用工具提示之后,我重写了方法public String getToolTipText(MouseEvent e)

代码语言:javascript
复制
package gui.paneles.elementos;

import java.awt.event.MouseEvent;

import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumnModel;

public class TableHeaderTooltipWidth extends JTableHeader {

private static final long serialVersionUID = 1L;

public TableHeaderTooltipWidth() {

}
public TableHeaderTooltipWidth(TableColumnModel model) {
    super();
}

    @Override
    public String getToolTipText(MouseEvent e) {
        int col = columnAtPoint(e.getPoint());
        return String.valueOf(this.getColumnModel().getColumn(col).getPreferredWidth());
    }
}

但是工具提示没有显示出来。任何帮助都将不胜感激。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-27 04:34:02

.在阅读了官方教程如何使用工具提示之后。

也请查看:Specifying Tool Tips for Column Headers - How to Use Tables (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)

代码语言:javascript
复制
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;

public class TableHeaderTooltipWidthTest {
  public JComponent makeUI() {
    TableModel model = new DefaultTableModel(
        new Object[][] {{ "label1", "label2", "label3", "label4"} }, 
        new String[] { "foo", "bar", "foo bar", "bar foo" });
    // How to Use Tables (The Java™ Tutorials)
    // Specifying Tool Tips for Column Headers
    // https://docs.oracle.com/javase/tutorial/uiswing/components/table.html#headertooltip
    JTable table = new JTable(model) {
      //Implement table header tool tips.
      @Override protected JTableHeader createDefaultTableHeader() {
        return new JTableHeader(columnModel) {
          @Override public String getToolTipText(MouseEvent e) {
            int col = columnAtPoint(e.getPoint());
            return String.valueOf(getColumnModel().getColumn(col).getPreferredWidth());
            //int index = columnModel.getColumnIndexAtX(e.getPoint().x);
            //int realIndex = columnModel.getColumn(index).getModelIndex();
            //return String.valueOf(columnModel.getColumn(realIndex).getPreferredWidth());
          }
        };
      }
    };
    return new JScrollPane(table);
  }
  public static void main(String... args) {
    EventQueue.invokeLater(() -> {
      JFrame f = new JFrame();
      f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
      f.getContentPane().add(new TableHeaderTooltipWidthTest().makeUI());
      f.setSize(320, 240);
      f.setLocationRelativeTo(null);
      f.setVisible(true);
    });
  }
}
票数 2
EN

Stack Overflow用户

发布于 2016-07-26 17:42:37

您需要使用鼠标协调和计算鼠标的位置,根据您的表标题需要一个很好的数学方程式来做到这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38589654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档