当前位置: 首页 > 面试题库 >

JTable上的JPopupMenu->获取在其上创建菜单的单元格

张博涛
2023-03-14
问题内容

我遇到的情况是,右键单击JTable时会创建一个弹出菜单。创建弹出菜单的标准方法:

aJTable.setComponentPopupMenu(rightClickMenu);

现在,在注册动作之后,我无法找出右键单击哪个单元以使该弹出菜单出现。

rightClickMenuItem.addActionListener(new AbstractAction() {
    @Override
    public void actionPerformed(ActionEvent e) {
        // Work out what cell was right clicked to generate the menu
    }

});

有关如何执行此操作的任何想法?


问题答案:

@MadProgrammer对getPopupLocation的建议看起来很有希望,但是我无法弄清楚如何在表和actionEvent之间获取信息。

我通过确保在右键单击该行时选择了该行来解决->由于弹出菜单阻止选择该行,因此您可以添加一个鼠标侦听器,以确保无论单击什么都可以选择该行(左或右)。

aTable.addMouseListener(new MouseAdapter() {
    @Override
    public void mousePressed(MouseEvent e) {
        int r = aTable.rowAtPoint(e.getPoint());
        if (r >= 0 && r < clt.getRowCount()) {
            aTable.setRowSelectionInterval(r, r);
        } else {
            aTable.clearSelection();
        }
    }
});

这意味着在rightClickMenuItem的动作侦听器中,您可以获取表的选定单元格/行

rightClickMenuItem.addActionListener(new AbstractAction() {
    @Override
    public void actionPerformed(ActionEvent e) {
        aTable.get details about the selected one....
    }
});

太容易了!谢谢大家的帮助。



 类似资料:
  • 我有一个JTable对象,我会在一个列上添加5个不同的JComboBox。 我已经尽力了: 但这会将相同的JComboBox添加到该列的所有单元格中。如何在同一列中添加不同的内容? 非常感谢。

  • 问题内容: 我有一个JTable 作为数据。现在,我想检测双击JLabel或表单元格(但仅在其中一列中)。如何在JLabel分别表单元格上添加Action / MouseListener? 问题答案: 怎么样:

  • JTable: 我在NetBeans中创建了一个JTable,其中我从数据库中的某些列中获取值,如图中所示,我为TESTNAME、单位、SPECIFICRANGE列带来值,但第二列OBSERVED VALUE我为用户输入保留了空值,用户输入是这样的每当用户点击颜色前面的单元格时,他应该在第二列单元格中得到一个JComboBox,我的意思是鼠标事件上的颜色前面的单元格,对于其他单元格,我使用edit

  • 我在“MainActivity.java”中动态创建了50个相对布局。 现在,我想,当长按每个“mini”时,会出现一个弹出菜单或上下文菜单,其中包含两个选项(1.打开和2.隐藏)。选择一个后,我将执行打开/隐藏操作。 我搜索互联网和发现一些建议,以创建一个*. xml菜单目录和附加到MainActivity.java使用onCreateContextMenu事件。 但是,我不明白这一点。由于我是

  • 设计定制JTable我已经知道DefaultCellEditor在其构造函数中允许使用JComboBox。单击此JComboBox以显示列表项时,它显示在JTable的其他单元格上方。问题是,我需要一个更复杂的行为,就像JComboBox提供的那样,这样我就用一个JList和一个JButton实现了一个JTextField,当点击JButton(或者用户在JTextField中输入文本)时,JLi

  • 问题内容: 我在基于Java的框架中重写了该方法,该框架是在此处托管的一个开源项目。该方法上创建一个右键快捷菜单中。我可以使用下面的代码正确添加其他上下文菜单选项。我需要知道如何在上下文菜单中添加子菜单。 问题答案: 支持添加子菜单。 该类扩展为提供在整个框架中使用的弹出菜单。该方法可以用于构造分层子菜单。例如,将子菜单以及其他杂项编辑操作添加到中最右边的弹出菜单。该方法中是使用另一示例编辑器。