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

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

我得到了部分工作

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

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

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

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

有没有人曾经这样做过?

谢谢你的帮助!

为什么依靠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()); } } }); 

希望我能为Netbeans回答它……我希望这对某人有所帮助

  1. 在表单中添加一个弹出菜单(它在其他组件中)称为jPopupMenu
  2. 将菜单项添加到弹出菜单
  3. 转到JTable的特性(例如,称之为jTableDataOrSomething)
  4. 单击绑定选项卡(或右键单击jTable Bind>元素)
  5. 将ComponentPopupMenu值设置为我调用的jPopupMenu

    下一步,

  6. 在属性中选择事件并转到鼠标释放将其设置为您的jTableDataOrSomething(或右键单击表,事件>鼠标>鼠标已释放)

    Netbeans创建一个空函数并设置以下代码

     private void jTableDataOrSomethingMouseReleased(java.awt.event.MouseEvent evt) { if (evt.isPopupTrigger()) { JTable source = (JTable)evt.getSource(); int row = source.rowAtPoint( evt.getPoint() ); int column = source.columnAtPoint( evt.getPoint() ); if (!source.isRowSelected(row)) { source.changeSelection(row, column, false, false); } jPopupMenu.show(evt.getComponent(), evt.getX(), evt.getY()); } } 
  7. 创建为每个菜单项执行的menuitem操作

    然后在那里你可以使用:

      int[] rows = jTableDataOrSomething.getSelectedRows(); for (int row : rows) { boolean j = true; try { modelRow = jTableDataOrSomething.convertRowIndexToModel(row); //do something with the selected rows... 

这需要多行选择并考虑排序/过滤。

完成function

  jTableDataOrSomething.repaint(); 

请享用