请帮助
这是我项目的屏幕布局。
具有蓝色背景的区域是具有其自己的控制器的FXML文件,并且键盘区域是具有其自己的控制器的不同FXML文件。单击textArea时会出现键盘区域。
我的问题是,我将如何编码这种情况:
当我按下键盘上的字母Q时,字母'Q'将出现在textArea上。
我遇到困难,因为它来自不同的控制器。拜托,我非常需要你的帮助。
答案 0 :(得分:0)
让我们调用蓝色区域ControllerA
和ControllerB
键盘控制器的控制器。让ControllerA
实现以下interface
public interface KeyListener {
/*
* Used when a character is typed.
*/
void keyPress(char typedChar);
/*
* Used when esc, backspace ... are pressed.
* Use keycodes from java.awt.event.KeyEvent.
*/
void keyPress(int vkCode);
}
当然,您可以使用其他编码代替java.awt.event.KeyEvent中的键。
现在将以下代码添加到ControllerB
:
private KeyListener keyListener;
public void setKeyListener(KeyListener keyListener) {
this.keyListener = keyListener;
}
在ControllerA
中添加键盘的代码应如下所示:
//...
FXMLLoader fxmlLoader = new FXMLLoader();
Pane keyboardPane = fxmlLoader.load(getClass().
getResource("YourKeyboardLayout.fxml").openStream());
ControllerB keyboardController = (ControllerB) fxmlLoader.getController();
keyboardController.setKeyListener(this);
//...
现在你所要做的就是实现KeyListener
的功能来调整文本字段中的文本,并在每次按下键盘键时调用keyListener
的正确功能。