JTable之单元格显示Tip

本文介绍了一个使用Java Swing实现的JTable组件案例,通过为表格添加鼠标移动监听器来显示单元格的悬停提示,增强用户体验。文章详细展示了如何创建表格模型、设置表格属性以及实现鼠标移动事件的处理。
import java.awt.Point;

import java.awt.event.MouseEvent;

import java.awt.event.MouseMotionListener;



import javax.swing.JFrame;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.table.AbstractTableModel;

import javax.swing.table.TableModel;



public class TableTip {



	private JFrame jFrame;



	private JTable jTable;



	private JScrollPane jScrollPane;



	private int row;



	private int column;



	/**

	 * @param args

	 */

	public static void main(String[] args) {

		TableTip tableTip = new TableTip();

		tableTip.show();

	}



	private void show() {

		jFrame = new JFrame();

		jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		jFrame.setSize(300, 128);

		final Object jtText[][] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 },

				{ 9, 10, 11, 12 }, { 13, 14, 15, 16 }, { 17, 18, 19, 20 } };

		final String jtHead[] = { "Column1", "Column2", "Column3", "Column4" };

		TableModel dataModel = new AbstractTableModel() {



			private static final long serialVersionUID = 0L;



			public int getColumnCount() {

				return jtHead.length;

			}



			public int getRowCount() {

				return jtText.length;

			}



			public Object getValueAt(int rowIndex, int columnIndex) {

				return jtText[rowIndex][columnIndex];

			}



			public String getColumnName(int column) {

				return jtHead[column];

			}



			public boolean isCellEditable(int row, int col) {

				return false;

			}



			public void setValueAt(Object aValue, int row, int column) {

				jtText[row][column] = aValue;

			}

		};

		jTable = new JTable(dataModel);

		jTable.setCellSelectionEnabled(false);

		// 设置不能重新调整列宽

		jTable.getTableHeader().setResizingAllowed(false);

		// 设置不能重新排序各列

		jTable.getTableHeader().setReorderingAllowed(false);

		// 监听鼠标移动,修改TIP

		jTable.addMouseMotionListener(new MouseMotionListener() {

			@Override

			public void mouseDragged(MouseEvent e) {

			}



			public void mouseMoved(MouseEvent e) {

				Point point = e.getPoint();

				int x = jTable.rowAtPoint(point);

				int y = jTable.columnAtPoint(point);

				if (x != row || y != column) {

					row = x;

					column = y;

				}

				Object tip = jTable.getValueAt(row, column);

				if (tip != null) {

					jTable.setToolTipText("Row:"+(row+1)+" Column:"+(column+1)+":"+tip.toString());

				}

			}

		});

		jScrollPane = new JScrollPane(jTable);

		jScrollPane.setBounds(10, 40, 280, 90);

		jFrame.add(jScrollPane);

		jFrame.setVisible(true);

	}

}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值