当前位置: 首页 > 知识库问答 >
问题:

在java中,如何将JTable上的左键点击动作调整为右键点击?

郎宏逸
2023-03-14

我有一个JTable,我想左键点击,右键点击jpopmpmenu。通常,在JTable上单击鼠标左键可以选择一行。我想做同样的右键点击加上显示一个弹出菜单。有人知道怎么做吗?

table.addMouseListener(new MouseAdapter() {
       @Override
       public void mouseClicked(MouseEvent e) {
           if (SwingUtilities.isRightMouseButton(e)) {
               //this line gives wrong result because table.getSelectedRow() stay alwase on the same value
               codeModel.setSelectedFileName(table.getValueAt(table.getSelectedRow(), 0).toString());
               JPopupMenu popup = createRightClickPopUp();
               popup.show(e.getComponent(), e.getX(), e.getY());
           }else{
               codeModel.setSelectedFileName(table.getValueAt(table.getSelectedRow(), 0).toString());
               codeTextArea.setText(codeModel.getCodeContents());
           }
       }
   });

共有3个答案

柏阳炎
2023-03-14

您可以使用鼠标侦听器中的JTable.rowAtPoint(event.getPoint())轻松确定单击的行。

呼延辰龙
2023-03-14

>

  • 请阅读我的问题JTable和JPOppMenu

    最重要的是ListSelectionModel的类型

    对你的问题来说是次要的,但这两个答案都是正确的和伟大的

  • 太叔繁
    2023-03-14
    table.addMouseListener(new MouseAdapter() {
       @Override
       public void mouseClicked(MouseEvent e) { //or mouseReleased(MouseEvent e)
           if (SwingUtilities.isRightMouseButton(e)) {
               //-- select a row
               int idx = table.rowAtPoint(e.getPoint());
               table.getSelectionModel().setSelectionInterval(idx, idx);
               //---
               codeModel.setSelectedFileName(table.getValueAt(table.getSelectedRow(), 0).toString());
               JPopupMenu popup = createRightClickPopUp();
               popup.show(e.getComponent(), e.getX(), e.getY());
           }else{
               codeModel.setSelectedFileName(table.getValueAt(table.getSelectedRow(), 0).toString());
               codeTextArea.setText(codeModel.getCodeContents());
           }
       }
    });
    
     类似资料:
    • 从pygame的api来看,它有: 但是没有办法区分右点击和左点击?

    • 问题内容: 我正在使用Selenium编写一些UI测试,并且使用Dojo工具箱具有一个JavaScript Tree控件。 我已经使用Dojo提供的示例为树的每个节点实现了一个上下文菜单,但是我需要Selenium测试来“调用”树节点上的右键,但是我无法使其正常工作。这些测试根本不会通过JavaScript模拟右键单击事件,并且不会显示上下文菜单。 是否有人在使用Dojo和Selenium调用上下

    • 问题内容: 我正在构建一个状态栏应用程序,并希望根据用户单击左侧还是右侧来调用不同的操作。这是我到目前为止的内容: 没有调用我的函数,也找不到我们的原因。感谢您的帮助! 问题答案: 你有没有尝试过: 然后看到该功能中按下了哪个鼠标键? 所以看起来像… https://github.com/craigfrancis/datetime/blob/master/xcode/DateTime/AppDel

    • 我有一个Java Swing Jlist,我知道如何处理在“选定项”上的左键单击和右键单击,但这里我的问题是:如果项1当前被选中,但当我右键单击项3时,如何获得该项的信息/标识?例如,如下图所示,

    • 我正在尝试调整图像按钮正下方的软键盘,但它覆盖了图像按钮,使其无法单击。当用户单击编辑文本时,我希望按钮位于软键盘的正上方。我尝试过使用,但它似乎不起作用。 下面是我的布局。xml文件 在AndroidManifest中。我拥有的xml文件

    • 我想转换我所有的map1键从浮动到整数。 在这里,我想将map1 HashMap存储到map2 HashMap,但map2有一个整数类型的键,map1有一个浮点类型的键,因此我想将我的map1键转换为整数。所以我可以轻松地将这些密钥存储到map2中