Как сделать текстовое поле JavaFX невидимым, но все же разрешить ввод текста в него

Я столкнулся с этой проблемой на php 7.1, который поставляется с High Sierra (OS X 10.13.5), редактирование /etc/apache2/httpd.conf со следующими изменениями помогло:

  1. Раскомментировать эту строку
    LoadModule php7_module libexec/apache2/libphp7.so
    
  2. Вставить пасту в конце
    <IfModule php7_module>
        AddType application/x-httpd-php .php
        AddType application/x-httpd-php-source .phps
    
        <IfModule dir_module>
            DirectoryIndex index.html index.php
        </IfModule>
    </IfModule>
    
0
задан Fady 24 March 2019 в 20:23
поделиться

3 ответа

У вас есть несколько возможностей скрыть текстовое поле с помощью css. Проще всего установить непрозрачность на 0

TextField.css

.hidden{
    -fx-opacity: 0;
}

Java

GridPane root = new GridPane();
// Add stylesheet
root.getStylesheets().add("TextField.css");

TextField textField = new TextField();
// Add class
textField.getStyleClass().add("hidden");

С другой стороны, я бы действительно Спросите себя, если этот "взломать" путь. Если ваш сканер штрих-кода просто вставляет текст, возможно, лучшим решением будет добавить обработчик событий и соответственно обрабатывать нажатия клавиш:

EventHandler

root.addEventHandler(KeyEvent.ANY,(event)->{
    System.out.println(event);
});
0
ответ дан Kilian 24 March 2019 в 20:23
поделиться

На самом деле вам не нужно иметь TextField в сцене. На самом деле я бы не рекомендовал этого делать, поскольку это мешало бы фокусировке и, возможно, макету.

Вместо этого я бы добавил слушателя на сцену (или корневой узел сцены, убедившись, что он или потомок могут получить фокус, установив свойство focusTraversable в true, если необходимо). Вам может понадобиться использовать фильтр событий, если у узла, который потребляет KEY_PRESSED, может быть фокус:

@Override
public void start(Stage primaryStage) throws IOException {
    StackPane root = new StackPane(new Button());
    Scene scene = new Scene(root);

    final StringBuilder string = new StringBuilder();
    scene.addEventFilter(KeyEvent.KEY_PRESSED, evt -> {
        KeyCode code = evt.getCode();
        if (code.isDigitKey()) {
            // input part of the information
            String name = code.toString();
            string.append(name.charAt(name.length() - 1)); // make sure numpad keys do not 
        } else if (code == KeyCode.ENTER) {
            // submit input
            submitCode(string.toString());
            string.setLength(0);
        }
    });

    primaryStage.setScene(scene);
    primaryStage.show();
}

private void submitCode(String code) {
    System.out.println(code);
}
0
ответ дан fabian 24 March 2019 в 20:23
поделиться

Попробуйте использовать TextField.setText (java.lang.String) .

0
ответ дан SirMathhman 24 March 2019 в 20:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: