我正在寻找一种在处理数据的同时运行键监听器的方法,这取决于按住按钮。我想知道的是是否可以在其他方法中嵌套方法?
这就是我可以有一个while循环重复,同时仍然允许键监听器通过将键监听器方法放在循环内来工作。
像这样:import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class myClass implements KeyListener {
public void myMethod() {
public void keyPressed(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
}
}
这可能吗?
如果是,嵌入myMethod()内部的关键监听器是否仍然可以正常工作?
答案 0 :(得分:0)
public class myClass implements KeyListener {
public void myMethod() {
public void keyPressed(KeyEvent e) {} // Not possible in java + no termination with `;`
public void keyReleased(KeyEvent e) {} // Not possible in java + no termination with `;`
public void keyTyped(KeyEvent e) {} // Not possible in java + no termination with `;`
}
}
您可能想要查看Java 8中lambdas的用法,只有在您被允许使用Java8时才能使用它。 Lambda不能解决您的问题,但可能会帮助您了解您是否希望处理程序函数是匿名的,但结构稍微好一些。
答案 1 :(得分:0)
工作实施来自:edu4java
这些方法中的每一个都单独声明它们是类的一部分,它们在另一个方法中被调用未在方法中声明
public static void main(String[] args) {
JFrame frame = new JFrame("Mini Tennis");
KeyboardExample keyboardExample = new KeyboardExample();
frame.add(keyboardExample);
frame.setSize(200, 200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public class MyKeyListener implements KeyListener {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println("keyPressed="+KeyEvent.getKeyText(e.getKeyCode()));
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println("keyReleased="+KeyEvent.getKeyText(e.getKeyCode()));
}
}
您的实施
不起作用,因为你试图在另一个方法中声明一个方法;你不能在myMethod()
内声明一个方法。 必须必须在其外部声明。
public class myClass implements KeyListener {
//Your problem is right here
public void myMethod() {
public void keyPressed(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
}
}
将您的实施更改为以下
public class myClass implements KeyListener {
public void myMethod() {
//You can call the methods below inside this method.
}
public void keyPressed(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
}