【发布时间】:2017-11-03 10:40:51
【问题描述】:
我有:
- 从 JFrame 扩展的类;
- JTextField 的元素列表 - JTextField[] pix。
当点击 pix[i] - JFrame 必须图标化,并且在屏幕的任何点下一次点击必须完全改变 textField (pix[i]) 而不影响另一个 textFields,然后框架必须标准化,之后的任何 mouseClicks ( not on textField) 不能影响那些元素。
使用 jnativehook 库处理的 JFrame 之外的点击。
这里的那部分代码:
for (int i = 0; i < pix.length; i++){
int tmp = i;
pix[i].addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
setState(Frame.ICONIFIED);
GlobalScreen.addNativeMouseListener(new NativeMouseAdapter(){
public void nativeMouseClicked(NativeMouseEvent e){
pixelChoose(pix[tmp]);
setState(Frame.NORMAL);
}
});
}
});
P.S.:我试过用
GlobalScreen.removeNativeMouseListener(new NativeMouseAdapter() {
public void nativeMouseClicked(NativeMouseEvent e) {
}
});
但实际上并不知道如何正确使用它。
P.S.[2]:如果您对该问题有其他解决方案,欢迎您将其输入到答案中 - 这会很棒:>
编辑! 我很忙,现在我在这里找到解决方案:
NativeMouseAdapter adapter = new NativeMouseAdapter(){
public void nativeMouseClicked(NativeMouseEvent e){
pixelChoose(pix[tmp]);
setState(Frame.NORMAL);
GlobalScreen.removeNativeMouseListener(this);
}
};
MouseListener listener = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
setState(Frame.ICONIFIED);
GlobalScreen.addNativeMouseListener(adapter);
}
};
pix[i].addMouseListener(listener);
【问题讨论】:
-
您需要引用您最初添加的匿名 NativeMouseAdapter。
-
@matt,怎么样?你能举个例子吗?
标签: java swing jframe listener