展开全部
//创建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包中提供的方法。
追问
谢谢!
本回答由提问者推荐
已赞过
已踩过<
你对这个回答的评价是?
评论
收起