我正在使用popop菜单创建一个这样的表
JTable table = new Table()
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());
}
}
});
我希望能够通过电话启用/禁用此菜单,我试过这个:
table.setEnabled(假)
但菜单仍然弹出。我该怎么办?
答案 0 :(得分:1)
好吧,你可能不得不将其删除为听众。所以,将它保存为类中的成员变量,如下所示:
private MouseAdapter adapt;
您的其他代码将变为:
adapt = 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());
}
}
});
table.addMouseListener(adapt);
然后,你的电话会是这样的:
public void disableTableMenu() {
table.removeMouseListener(adapt);
}
另外,要重新添加,您可以拥有以下内容:
public void enableTableMenu() {
table.addMouseListener(adapt);
}
答案 1 :(得分:1)
您可以在创建名为tableMenuEnabled的表的类中包含一个布尔值。您应该能够将tableMenuEnabled设置为true或false,而您计划调用table.setEnabled(false)。从那里你的代码将变为:
table.addMouseListener( new MouseAdapter()
{
public void mouseReleased(MouseEvent e)
{
if (tableMenuEnabled && 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());
}
}
});