jtable单元格的悬浮提示和表头标题的悬浮提示
来源:互联网 发布:用手机安装plc编程软件 编辑:程序博客网 时间:2024/05/16 05:48
swing 项目时遇到这样一个问题:jtable显示内容时其中某列内容比较长通常显示不下,又因为某些原因不想或不能给予这列足够的空间,于是就想到了ToolTip。
查了下java API发现jtbale中只有个getToolTipText的方法须在渲染器中设置,由于没有使用自定义的Render,所以使用了父类JComponent的setToolTipText方法。具体原理为:setToolTipText是整个jtable单元格的提示,可在鼠标事件中根据不同的单元格提示不同的信息。
代码如下:
//悬浮提示单元格的值 table.addMouseMotionListener(new MouseAdapter(){public void mouseMoved(MouseEvent e) {int row=table.rowAtPoint(e.getPoint());int col=table.columnAtPoint(e.getPoint());if(row>-1 && col>-1){Object value=table.getValueAt(row, col);if(null!=value && !"".equals(value))table.setToolTipText(value.toString());//悬浮显示单元格内容elsetable.setToolTipText(null);//关闭提示}}});
后来发现直接重写jtable的public String getToolTipText(MouseEvent e)方法也可以达到效果,看来下jtbale源代码getToolTipText也是取自父类JComponent的getToolTipText方法。
还是直接重写方便点
table = new JTable(playerInfo, Names){public String getToolTipText(MouseEvent e) {int row=table.rowAtPoint(e.getPoint());int col=table.columnAtPoint(e.getPoint());String tiptextString=null;if(row>-1 && col>-1){Object value=table.getValueAt(row, col);if(null!=value && !"".equals(value))tiptextString=value.toString();//悬浮显示单元格内容}return tiptextString;}};
jtable表头的提示需重写JTableHeader的public String getToolTipText(MouseEvent e)方法。
最后列子如下(表头提示和单元格提示):
import java.awt.BorderLayout;
- import java.awt.event.MouseEvent;
- import javax.swing.JFrame;
- import javax.swing.JScrollPane;
- import javax.swing.JTable;
- import javax.swing.WindowConstants;
- import javax.swing.table.JTableHeader;
- public class JtableCellTips {
- private JTable table;
- String[] namestooltip={"wow ncp name","some word"};
- public JtableCellTips(){
- JFrame f = new JFrame();
- f.setSize(300, 200);
- Object[][] playerInfo = {
- { "提里奥.弗丁", "种族不代表荣耀,我见过最高尚的兽人,也见过最卑劣的人类。" },
- { "莫格莱尼", "生命本身毫无意义,只有死亡才能让你了解人性的真谛。"} };
- String[] Names = { "姓名", "台词" };
- table = new JTable(playerInfo, Names){
- public String getToolTipText(MouseEvent e) {
- int row=table.rowAtPoint(e.getPoint());
- int col=table.columnAtPoint(e.getPoint());
- String tiptextString=null;
- if(row>-1 && col>-1){
- Object value=table.getValueAt(row, col);
- if(null!=value && !"".equals(value))
- tiptextString=value.toString();//悬浮显示单元格内容
- }
- return tiptextString;
- }
- protected JTableHeader createDefaultTableHeader() {
- return new JTableHeader(columnModel) {
- public String getToolTipText(MouseEvent e) {
- String tip = null;
- java.awt.Point p = e.getPoint();
- int index = columnModel.getColumnIndexAtX(p.x);
- int realIndex = columnModel.getColumn(index).getModelIndex();
- return namestooltip[realIndex];
- }
- };
- }
- };
- //悬浮提示单元格的值
- // table.addMouseMotionListener(new MouseAdapter(){
- // public void mouseMoved(MouseEvent e) {
- // int row=table.rowAtPoint(e.getPoint());
- // int col=table.columnAtPoint(e.getPoint());
- // if(row>-1 && col>-1){
- // Object value=table.getValueAt(row, col);
- // if(null!=value && !"".equals(value))
- // table.setToolTipText(value.toString());//悬浮显示单元格内容
- // else
- // table.setToolTipText(null);//关闭提示
- // }
- // }
- // });
- JScrollPane scrollPane = new JScrollPane(table);
- f.getContentPane().add(scrollPane, BorderLayout.CENTER);
- f.setTitle("单元格悬浮提示");
- f.setLocationRelativeTo(null);
- f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
- f.setVisible(true);
- }
- public static void main(String[] args) {
- new JtableCellTips();
- }
- }
- jtable单元格的悬浮提示和表头标题的悬浮提示
- 标题悬浮提示框
- ExtJS4 grid单元格悬浮提示
- 顶部提示的悬浮窗
- Ext-grid单元格内容悬浮提示
- Extjs中textfield的悬浮提示
- 【android】Android Studio 的鼠标悬浮提示
- angularjs框架的悬浮提示框实现
- 去掉Eclipses的鼠标悬浮提示和增加输代码提示
- JTable的表头内容居中和单元格内容居中
- jtable 单元格 添加 提示
- div悬浮提示框
- jquery悬浮提示框
- jquery悬浮提示框
- KX鼠标悬浮提示
- jquery悬浮提示框
- echarts 鼠标悬浮提示
- eclipse关闭悬浮提示
- 账龄分析核对的操作步骤,解决客户不会核对账龄与业务明细的问题
- 使用format实现定长左对齐或右对齐
- 新发地,物流港,锦绣大地
- GeekOS源代码学习(1) fd_boot.asm 和 setup.asm
- 使用LCD和USB键盘作为终端
- jtable单元格的悬浮提示和表头标题的悬浮提示
- VC++之Edit控件自动换行
- Google为何看起来不担心Android的营收情况整个市场还处于扩大状态
- yaff2文件系统在FL2440上的移植
- C - extern声明辨析
- 在中国互联网创业需要低调低调潜行,隐藏自己
- 一个站在技术之巅的女游戏程序员
- eclipse 项目中搜索资源(类方法,文件名,文件中的字符串)(图解)
- N!解题报告