Использование JavaFXPorts на Android, если вы попытаетесь распечатать:
Platform.isSupported(ConditionalFeature.VIRTUAL_KEYBOARD)
Результат будет false
.
. И причина этого может быть найдена следующим образом:
Platform
звонки Toolkit.getToolkit().isSupported()
, которые идут на QuantumToolkit
, что заканчивается звонками Application.GetApplication().hasVirtualKeyboard()
.
Приложение для Android - MonocleApplication
, а hasVirtualKeyboard возвращает значение false:
@Override
public boolean hasVirtualKeyboard() {
return deviceFlags[DEVICE_PC_KEYBOARD] == 0 &&
deviceFlags[DEVICE_TOUCH] > 0;
}
Пока поддерживается касание и выполняется второе условие,первое условие не выполняется, потому что device.isFullKeyboard()
возвращает true.device
является экземпляром InputDevice
, который в Android реализован с помощью AndroidInputDevice
.
И, наконец, мы получаем AndroidInputDevice::isFullKeyboard
, который возвращает true и делает указанное выше условие ложным.
И мы можем увидеть комментарий , который объясняет, как это можно изменить:
@Override
public boolean isFullKeyboard() {
// if we return false, the JavaFX virtual keyboard will be used
// instead of the android built-in one
return true;
}
Если вы измените эту строку и создадите JavaFXPorts, у вас будет поддержка клавиатуры JavaFX.Но, учитывая ограничения этой клавиатуры, я не уверен, почему вы захотите использовать ее вместо родной.