Java - 鼠标事件在 JTable 中不起作用

标签 java swing jtable mouseevent defaulttablemodel

我在尝试对我的 JTable 进行点击行事件时遇到问题。我已将该事件添加到我的 JTable,但是当我运行我的程序并单击该行时,它没有显示消息。

这是我的代码:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.SQLException;

import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;

public class listContacts extends JFrame {

public listContacts(){

    setLayout(new FlowLayout());

    String[] columnNames = {"GSD Number", "Scheduled Time"};
    Object [][] dataTable = {};

    DefaultTableModel listTableModel;
    listTableModel = new DefaultTableModel(dataTable, columnNames) {

        //Prevent user from editing the cells
        public boolean isCellEditable(int rowIndex, int mCollIndex){
            return false;
        }
    };

    int cont = 1;

    while(cont < 10){
        listTableModel.addRow(new Object[] {cont, cont + cont} );
        cont++;
    }


    JTable listTable = new JTable(listTableModel);

  //This is the code that adds the event to the JTable
    listTable.addMouseListener(new MouseAdapter() {

        public void rowClicked(MouseEvent e){
            JOptionPane.showMessageDialog(null,"You've clicked on this row");
        }

    });

    listTable.setCellEditor(null);

    JScrollPane pane = new JScrollPane(listTable);
    add(pane);
}


public static void main(String[] args) {
    listContacts tester = new listContacts();
    tester.setVisible(true);
    tester.setDefaultCloseOperation(EXIT_ON_CLOSE);
    tester.setSize(800, 200);
    tester.setTitle("Just a test");
}

}

有人可以帮忙吗?提前致谢!

最佳答案

试试这个...

listTable.addMouseListener(new MouseAdapter() {

    // Add this annotation to your method
    @Override
    public void rowClicked(MouseEvent e){
        JOptionPane.showMessageDialog(null,"You've clicked on this row");
    }

});

现在编译它...看看它是如何失败的...

rowClicked 不是 MouseAdapter 继承的任何接口(interface)或类的方法,因此,没有任何东西可以调用它,因为没有人知道......它不在其中鼠标事件通知的契约(Contract)要求。

看看How to Write a Mouse Listenerjava.awt.MouseListener了解更多详情

关于Java - 鼠标事件在 JTable 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25561195/

相关文章:

java - Hibernate可以在没有Spring的情况下生成表吗?

java - 如何向数组中随机插入String数字-Java

java - Selenium Webdriver - 无法单击按钮 - 查找元素

java - IDEA Java swing GUI 形式 Jtable。表模型被自动生成的代码覆盖

java - 在不停用窗口的情况下捕获 JFrame 中的所有事件

java - 托管 javadoc?

java - 无法使用 loadIcon() 和 getProperty() 找到图标图像

java - 对行进行排序后更改 Swing JTable 中的行颜色

java swing jtable - 显示每行的行索引

java - 如何对JTable中JComboBox的字符串进行排序?