JTable中怎样获取鼠标所在位置的行数

博客展示了Java代码,创建了一个JTable对象,并为其添加鼠标点击事件监听器。在事件处理中,可获取表格总行数,还能通过鼠标点击位置得到点击的行数。

table=new JTable(cells,columnNames);

table.addMouseListener(new java.awt.event.MouseAdapter()
             {
                 public void mouseClicked(java.awt.event.MouseEvent e)
                 {
                     System.out.println("mouseClicked()"); // TODO Auto-generated
                                                           // Event stub
                                                           // mouseClicked()
                    
                     System.out.println("row numbers is :"+table.getRowCount());//获取表格的总行数
                    
                     //获取鼠标点击的行的位置(及行数)
                     Point mousepoint;                    
                     mousepoint =e.getPoint();
                     System.out.println(table.rowAtPoint(mousepoint)+1);
                    
                 }
             });

### 在 Java JTable获取显示的行数 在 Java 的 `JTable` 组件中,显示的行数指的是当前在可视区域内的行数。这与表格的总行数不同,总行数可以通过 `table.getRowCount()` 方法获取[^1]。为了获取显示的行数,需要结合 `JTable` 和其父容器(通常是 `JScrollPane`)来计算可视区域内的行数。 以下是实现此功能的详细方法: #### 代码示例 以下代码展示了如何计算 `JTable` 中显示的行数: ```java import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.awt.*; public class JTableVisibleRowCountExample { public static void main(String[] args) { // 创建一个示例表格 DefaultTableModel model = new DefaultTableModel(); model.addColumn("Column 1"); model.addColumn("Column 2"); for (int i = 0; i < 20; i++) { model.addRow(new Object[]{i, "Row " + i}); } JTable table = new JTable(model); JScrollPane scrollPane = new JScrollPane(table); // 获取显示的行数 int visibleRowCount = getVisibleRowCount(table, scrollPane); System.out.println("显示的行数: " + visibleRowCount); // 将组件添加到窗口并显示 JFrame frame = new JFrame("JTable 显示行数示例"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(scrollPane, BorderLayout.CENTER); frame.setSize(400, 300); frame.setVisible(true); } public static int getVisibleRowCount(JTable table, JScrollPane scrollPane) { Rectangle visibleRect = scrollPane.getViewport().getViewRect(); // 获取可视区域 int firstRowIndex = table.rowAtPoint(new Point(visibleRect.x, visibleRect.y)); // 第一行索引 int lastRowIndex = table.rowAtPoint(new Point(visibleRect.x, visibleRect.y + visibleRect.height)); // 最后一行索引 if (lastRowIndex == -1) { // 如果没有最后一行,则表示最后一行超出边界 lastRowIndex = table.getRowCount() - 1; } return Math.max(0, lastRowIndex - firstRowIndex + 1); // 计算显示的行数 } } ``` #### 代码解释 1. **获取可视区域**:通过 `scrollPane.getViewport().getViewRect()` 方法获取 `JScrollPane` 的可视区域。 2. **计算第一行和最后一行**: - 使用 `table.rowAtPoint(Point)` 方法确定可视区域的第一行和最后一行。 - 如果最后一行超出可视区域,则将其设置为表格的最后一行。 3. **计算显示的行数**:通过 `lastRowIndex - firstRowIndex + 1` 计算显示的行数。 #### 注意事项 - 如果 `JTable` 没有被放置在 `JScrollPane` 中,则无法使用上述方法计算显示的行数。 - 当表格为空时,显示的行数应为 0。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值