3 回答
TA贡献1820条经验 获得超2个赞
您可以使用css隐藏文本字段。最简单的方法是将不透明度设置为 0
文本字段.css
.hidden{
-fx-opacity: 0;
}
爪哇岛
GridPane root = new GridPane();
// Add stylesheet
root.getStylesheets().add("TextField.css");
TextField textField = new TextField();
// Add class
textField.getStyleClass().add("hidden");
另一方面,我真的会问自己,这个“黑客”是否是要走的路。如果您的条形码扫描仪只是插入文本,也许更好的解决方案是添加一个事件处理程序并相应地处理击键:
事件处理程序
root.addEventHandler(KeyEvent.ANY,(event)->{
System.out.println(event);
});
TA贡献1998条经验 获得超6个赞
您实际上不需要在场景中有一个。事实上,我不建议这样做,因为这会干扰焦点,并可能干扰布局。TextField
相反,我会向场景添加一个侦听器(或场景的根节点,以确保它或后代可以通过将属性设置为 ,如有必要)来获得焦点)。您可能需要使用事件过滤器,如果使用 的事件过滤器的节点可能具有焦点:focusTraversabletrueKEY_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);
}
添加回答
举报