java弹出表格_Java中,下面的表格如何选中一行右击弹出一个菜单(包含复制数据,删除数据,增行的功能),谢谢各位!!...

展开全部

//创建jtable的菜单

final JPopupMenu popup = new JPopupMenu();

JMenuItem jm_menu=new JMenuItem("添加属性");

jm_menu.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

//你的操作 我这里是给列添加属性

}

});

popup.add(jm_menu);

step2: MouseInputListener mil = new MouseInputListener(){ 实现当前的鼠标监控e68a8462616964757a686964616f31333337393032 按你说的应该是监控右键

public void mouseReleased(MouseEvent e)

{

// processEvent(e);

if ((e.getModifiers() & MouseEvent.BUTTON3_MASK) != 0 && !e.isControlDown() && !e.isShiftDown())

{

row_value=tableRows.getSelectedRow();//你选中的当前行

popup.show(tableRows, e.getX(), e.getY()); //将你的菜单添加到选中行上面

}

}

step3: tableRows-》我的table名称

tableRows.addMouseListener(mil);

tableRows.addMouseMotionListener(mil);

//怕你对鼠标监听不熟,下面是完整的代码 tableRows-》我的table名称,其他通过表获取列你都应该懂了。

//实现 MouseListener 和 MouseMotionListener 接口中的所有方法的侦听器

/*————————————————————————————————————————————————————————————————————————————*/

MouseInputListener mil = new MouseInputListener(){

public void mouseClicked(MouseEvent e)

{

processEvent(e);

}

public void mousePressed(MouseEvent e)

{

processEvent(e);

}

public void mouseReleased(MouseEvent e)

{

// processEvent(e);

if ((e.getModifiers() & MouseEvent.BUTTON3_MASK) != 0 && !e.isControlDown() && !e.isShiftDown())

{ row_value=tableRows.getSelectedRow();

idName_Meg=tableRows.getModel().getValueAt(tableRows.getSelectedRow(),0)+"";

popup.show(tableRows, e.getX(), e.getY());

}

}

public void mouseEntered(MouseEvent e)

{

processEvent(e);

}

public void mouseExited(MouseEvent e)

{

processEvent(e);

}

public void mouseDragged(MouseEvent e)

{

processEvent(e);

}

public void mouseMoved(MouseEvent e)

{

processEvent(e);

}

private void processEvent(MouseEvent e)

{

if ((e.getModifiers() & MouseEvent.BUTTON3_MASK) != 0)

{

int modifiers = e.getModifiers();

modifiers -= MouseEvent.BUTTON3_MASK;

modifiers |= MouseEvent.BUTTON1_MASK;

MouseEvent ne = new MouseEvent(e.getComponent(), e.getID(), e.getWhen(), modifiers, e.getX(), e .getY(), e.getClickCount(), false);

tableRows.dispatchEvent(ne);

}

}

};

/*————————————————————————————————————————————————————————————————————————————*/

更多追问追答

追问

谢谢了!你知道怎么设置一行数据可以被选中但是不可以被修改吗?

追答

你可以设置一个隐藏列呀,不可以修改的设置成不可修改,你对当前选中行修改时,可以先判断当前行能不能修改,不能修改直接跳过你修改的代码不就可以了。没必要非得通过jar包中提供的方法。

追问

谢谢!

本回答由提问者推荐

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值