【发布时间】:2018-06-04 08:55:55
【问题描述】:
我正在用 Java 编写一个 Swing 项目,最近偶然发现了一个问题。
我有一个充满对象的JTable(满是汽车的停车场),这段代码改变了两个元素的位置。如果没有选择汽车,则设置第一辆汽车的坐标。在下一次单击时,如果已经选择了一辆汽车,则设置另一辆汽车的坐标。接下来,将元素相互交换并擦除坐标。
现在,我还必须实现“取消”我的选择的可能性,例如选择第一辆车后,如果按下某个键,则应删除选择。有什么想法我该怎么做?
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;
}
}
});
【问题讨论】:
-
你需要一个'class KeyPressed implements KeyListener`,你可以看到按键并决定做什么。
-
@cliff2310:不,这是一个 Swing GUI,应该避免使用 KeyListener。
-
@Hovercraft Full Of Eels 好吧,我用它们没有问题,但我屈服于你的广博知识。你能给我一些参考吗?
-
@cliff2310:首先KeyListener Tutorial 明确建议支持键绑定。如需与文本组件一起使用,请阅读MadProgrammer's answer,然后对其进行投票。
标签: java swing jtable key pressed