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
相反,我會向場景添加一個偵聽器(或場景的根節(jié)點,以確保它或后代可以通過將屬性設置為 ,如有必要)來獲得焦點)。您可能需要使用事件過濾器,如果使用 的事件過濾器的節(jié)點可能具有焦點: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);
}
添加回答
舉報