Java Swing JTable; 右键单击菜单(如何将其设为"选择"并突出显示该行)

Car*_*ndo 29 java swing jtable right-click

简短:我需要一个"右键单击事件"来突出显示单元格行.

我在Java Swing(Netbeans Matisse)的ScrollPane中使用JTable.我在JTable上有一个MouseClicked事件监听器,它执行以下操作:

if (evt.getButton() == java.awt.event.MouseEvent.BUTTON3) {
          System.out.println("Right Click");
          JPopUpMenu.show(myJTable, evt.getX(), evt.getY())
}
Run Code Online (Sandbox Code Playgroud)

问题是......每当我在JTable上执行右键单击时,行都不会突出显示(我将选择设置为行仅btw).我找了几个setSelected()函数但找不到合适的函数.默认情况下,左键单击会自动突出显示该行.如何设置右键点击?

cla*_*amp 83

像这样:

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

        int rowindex = table.getSelectedRow();
        if (rowindex < 0)
            return;
        if (e.isPopupTrigger() && e.getComponent() instanceof JTable ) {
            JPopupMenu popup = createYourPopUp();
            popup.show(e.getComponent(), e.getX(), e.getY());
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

......

  • 很好的答案.细节:在某些平台上(Mac OS X命名),弹出菜单由`mousePressed`而不是'mouseReleased`触发,因此如果您使用此代码,如果您在Mac OS上运行您的应用程序,弹出窗口将不会显示X. (6认同)