首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaFX数据管理

JavaFX数据管理
EN

Stack Overflow用户
提问于 2014-04-16 19:20:47
回答 1查看 815关注 0票数 1

场景1和它的Scene1Controller!它有一个文本字段(客户名称)和一个按钮!

当我点击场景1中的按钮时,屏幕上的键盘就会出现,而不会关闭场景!

屏幕上的键盘有它自己的控制器!

屏幕上键盘有一个文本框和完整的键盘。

键入“堆栈溢出”到文本框的屏幕上键盘!

按下屏幕键盘中的enter后,如何将屏幕上键盘的textfield值检索到场景1的“客户名称”字段中?

第一幕:

代码语言:javascript
复制
<TextField fx:id="CustomerName" layoutX="14.0" layoutY="75.0" onAction="#TextBoxTextChanged" prefHeight="29.0" prefWidth="254.0"/>
<Button fx:id="OnScreenKeyBoardButton" layoutX="268.0" layoutY="75.0" mnemonicParsing="false" onAction="#ButtonNameClick" prefHeight="29.0" text="..." />

屏幕键盘:

所有的钥匙和

输入按钮代码:

代码语言:javascript
复制
<Button fx:id="enterButton" layoutX="796.0" layoutY="210.0" minHeight="18.8" mnemonicParsing="false" prefHeight="40.0" prefWidth="90.0" text="Enter" onAction="#ButtonEnterClick"/>

第一幕主计长:

代码语言:javascript
复制
@FXML
public void ButtonNameClick(final ActionEvent event)
{
  //opens on-screen keyboard
}

屏幕键盘控制器:

代码语言:javascript
复制
@FXML
public void ButtonEnterClick(final ActionEvent event)
{
  //code to be written to get the text field of the on-screen keyboard into the textfield of scene 1
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-16 20:31:24

只需在键盘控制器中创建一个属性来表示文本,并从“Screen1Controller”中观察它:

代码语言:javascript
复制
public class KeyboardController {
    private StringProperty text = new SimpleStringProperty(this, "text", "");
    public StringProperty textProperty() {
         return text ;
    }
    public String getText() {
        return text.get();
    }
    public void setText(String text) {
        this.text.set(text);
    }

    @FXML
    public void buttonEnterClick(ActionEvent event) {
        text.set(// text from keyboard) ;
    }
    // ... everything else as before
}

代码语言:javascript
复制
public class Screen1Controller {
    @FXML
    private TextField customerName ;
    // ...
    @FXML
    public void buttonNameClick(ActionEvent event) {
        FXMLLoader loader = new FXMLLoader(getClass().getResource("Keyboard.fxml"));
        Parent parent = loader.load();
        KeyboardController controller = (KeyboardContoller) loader.getController();
        controller.textProperty().addListener(new ChangeListener<String>() {
            @Override
            public void changed(ObservableValue<? extends String> obs, String oldValue, String newValue) {
                // update text field with newValue:
                customerName.setText(newValue);
            }
        });
        // show keyboard ...
    }

    // other code...
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23118330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档