我有一个虚拟键盘类,它使用JAVA中的JButtons实现了QWERTY纯字母数字屏幕键盘。我为每个按钮安装了actionlisteners,这样每当点击按钮时,就会记录按钮的标签。
我想做的是,在保持键盘类独立的同时,我想创建一个键盘类的实例,以便它接收输入并将其传递回主类,然后这可以在循环中发生。就像您可以使用has.nextLine()不断请求输入一样,我希望能够通过创建屏幕键盘类的实例来实现这一点。
我已经编写了键盘类,它运行得很好,但问题是整数是键盘类的本地整数,我想不出一种方法可以把它放在类之外。
您可以使用观察者模式。我不是在这里使用摇摆,只是为了展示它的效果。
使键盘类可观察
import java.util.Observable;
public class Keybaord extends Observable {
private String keyThatIsPressed;
public void setKeyThatIsPressed(String keyThatIsPressed) {
this.keyThatIsPressed = keyThatIsPressed;
setChanged();
notifyObservers(keyThatIsPressed);
}
public String getKeyThatIsPressed(){
return keyThatIsPressed;
}
}
使您的主要类观察者
import java.util.Observable;
import java.util.Observer;
public class MainClass implements Observer {
private String keyThatIsPressed;
@Override
public void update(Observable observable,
Object object) {
if (object instanceof String) {
this.keyThatIsPressed = (String) object;
System.out.println("Key that was unlucky enough to get pressed was: "
+ keyThatIsPressed);
}
}
}