Netbeans中的JTable右键单击弹出菜单

DRJ*_*wer 4 java netbeans netbeans6.8

我想在NetBeans IDE中向JTable添加一个右键单击弹出菜单(看起来像一个简单的任务...大声笑)

我得到了部分工作

  1. 在表单中添加弹出菜单
  2. 将菜单项添加到弹出菜单
  3. 去找JTable的特色
  4. 单击绑定选项卡
  5. 将ComponentPopupMenu值设置为我的弹出菜单

但这只是部分有效.现在,当我右键单击Table时,弹出菜单,但JTable中的选定行不会改变.因此,当调用menuitem的actionPerformed时,我不知道JTable中的哪一行被点击了.

我怎么能得到这个?或者在netbeans中有更简单的方法吗?

我知道还有其他方法(在代码中),但我更喜欢使用netbeans GUI builder.

有没有人曾经这样做过?

谢谢你的帮助!

cam*_*ckr 10

为什么依靠IDE为您生成代码?当您转移到另一个IDE并且您必须学习如何为该ide执行此操作时会发生什么?学习如何编写自己的代码然后IDE无关紧要:

table.addMouseListener( new MouseAdapter()
{
    public void mouseReleased(MouseEvent e)
    {
        if (e.isPopupTrigger())
        {
            JTable source = (JTable)e.getSource();
            int row = source.rowAtPoint( e.getPoint() );
            int column = source.columnAtPoint( e.getPoint() );

            if (! source.isRowSelected(row))
                source.changeSelection(row, column, false, false);

            popup.show(e.getComponent(), e.getX(), e.getY());
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 对于除GUI以外的任何事情,我都会同意你的观点,但是在代码中设计一个接口总是比通过拖放来设计相同的接口需要更长的时间.谢谢你的代码示例,这两行实际上解决了我的问题.JTable source =(JTable)e.getSource(); int row = source.rowAtPoint(e.getPoint()); 我不知道你可以从某一点获得一排. (5认同)