我正在尝试在密码字段上实施大写锁定警报.如果大写锁定为ON,则气泡将显示在密码字段下方.我搜索了很多,但没有得到任何解决方案,我怎么能在JavaFX中的输入字段上实现这样的气泡.我找到了一些源代码来获得大写锁定状态.
boolean isOn=Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);
scene.setOnKeyReleased( event -> {
if ( event.getCode() == KeyCode.CAPS ) {
System.out.println("Capslock pressed");
System.out.println("Capslock state: " + isOn);
}
});
Run Code Online (Sandbox Code Playgroud)
但我的问题是如何在文本字段上实现气泡警报.在这里你可以看到我必须做的事情.
如果你建议我一些可能的方法,因为我是JavaFX的新手,这将会很有帮助.是否有任何JavaFX库在输入字段上执行此类气泡警报?
听起来您已经弄清楚如何获取输入状态,您可以为侦听器尝试类似的操作
public class Main extends Application {
private Label capsLabel = new Label("Caps is ON");
private boolean capsIsOn;
@Override
public void start(Stage stage) {
System.out.println(Toolkit.getDefaultToolkit().getLockingKeyState(20));
//Try adding this line to get state on startup
capsLabel.setVisible(Toolkit.getDefaultToolkit().getLockingKeyState(20));
TextField textField = new TextField();
//Also try adding this line and to check again so when the field
//is selected it will check again
textField.setOnMouseClicked(event -> capsLabel.setVisible(Toolkit.getDefaultToolkit().getLockingKeyState(20)));
textField.setOnKeyReleased(keyEvent -> {
if(keyEvent.getCode().toString().equals("CAPS")){
capsIsOn = !capsIsOn;
capsLabel.setVisible(capsIsOn);
}
});
VBox vBox = new VBox();
vBox.getChildren().addAll(textField, capsLabel);
stage = new Stage();
stage.setScene(new Scene(vBox));
stage.show();
}
public static void main(String[] args) { launch(args); }
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以将其设置在计时器上,并让它不断地亲自检查我不喜欢不断使用计算机资源的想法,但这不是我的项目。
| 归档时间: |
|
| 查看次数: |
320 次 |
| 最近记录: |