按下转义键时取消表选择



我正在用Java编写一个Swing项目,最近偶然发现了一个问题。

我有一个装满物体的JTable(停车场装满了汽车(,这段代码改变了 2 个元素的位置。如果未选择汽车,请设置第一辆车的坐标。下次单击时,如果已经选择了一辆车,请设置另一辆车的坐标。接下来,将元素相互交换并擦除坐标。

现在,我还必须实现"取消"我的选择的可能性,例如,在选择第一辆车后,如果按下一个键,则应删除选择。任何想法我该怎么做?

jt.addMouseListener(new java.awt.event.MouseAdapter() {
int y1 = -1;
int x1 = -1;
public void mouseReleased(java.awt.event.MouseEvent e) {
if(x1 == -1 && y1 == -1) {
y1 = jt.rowAtPoint(e.getPoint());
x1 = jt.columnAtPoint(e.getPoint());
} 
else {
int y2 = jt.rowAtPoint(e.getPoint());
int x2 = jt.columnAtPoint(e.getPoint());
Car tmp = (Car)carpark[y1][x1];
carpark[y1][x1] = carpark[y2][x2];
carpark[y2][x2] = tmp;
model.fireTableDataChanged();
x1 = -1;
y1 = -1;
y2 = -1;
x2 = -1;
}
}
});

请参阅如何使用键绑定。
以下是帮助您入门的内容:

InputMap im = table.getInputMap();
ActionMap am = table.getActionMap();
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "cancel");
am.put("cancel", new CancelAction());

CancelAction的定义如下:

class CancelAction extends AbstractAction {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("esc button pressed ");
}
}

你需要一个GUI组件,比如JTextField,它可以注册KeyListener并编程正确的操作:请参阅文档。

像这样:

JTextField tf = new JTextField();
tf.addKeyListener(
new KeyListener() {
void keyPressed(KeyEvent e) {
// your stuff here
}
// other methods must be overriden
}
);

您也可以为按钮和面板等其他组件注册密钥侦听器。

相关内容

  • 没有找到相关文章

最新更新