20トグルbuttons.Iがあり、画像を1として(私は、キーボードからのプレスV午前alphabetically.Ifそれが最初に出現を選択しますキーを押して上のフォーカストラバーサルを変更したいですVVS1)を選択すると、2回目の発生(VVS2)が選択されます。
Q
選択ノード
1
A
答えて
1
反復トグルを通って、一つは適切なテキストは、そのノードに選択したトグルを変更含まれていることが判明した場合:
private static Node[] fromStrings(ToggleGroup group, String... strings) {
Node[] result = new Node[strings.length];
for (int i = 0; i < strings.length; i++) {
ToggleButton button = new ToggleButton(strings[i]);
button.setPrefSize(100, 50);
button.setTextAlignment(TextAlignment.CENTER);
button.setToggleGroup(group);
result[i] = button;
}
return result;
}
@Override
public void start(Stage primaryStage) {
GridPane root = new GridPane();
final ToggleGroup group = new ToggleGroup();
root.addRow(0, fromStrings(group, "If", "VVS1", "VVS2", "VS1", "VS2", "SI1", "SI2", "SI2-", "SI3", "SI3-"));
root.addRow(1, fromStrings(group, "I1", "I1-", "I2", "I2-", "I3", "I4", "I5", "I6", "I7", "I8"));
root.setFocusTraversable(true);
root.setOnKeyTyped(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
String s = event.getCharacter().toUpperCase();
// move focus to the next matching element
if (s.length() == 1) {
event.consume();
List<Toggle> toggles = group.getToggles();
int selectedIndex = toggles.indexOf(group.getSelectedToggle());
int size = toggles.size();
// search next matching node starting directly after the
// selected position
for (int i = selectedIndex + 1; i < size; i++) {
Toggle l = toggles.get(i);
if (((Labeled)l).getText().toUpperCase().startsWith(s)) {
group.selectToggle(l);
return;
}
}
for (int i = 0; i < selectedIndex; i++) {
Toggle l = toggles.get(i);
if (((Labeled)l).getText().toUpperCase().startsWith(s)) {
group.selectToggle(l);
return;
}
}
}
}
});
Scene scene = new Scene(root);
root.requestFocus();
primaryStage.setScene(scene);
primaryStage.show();
}
0
私は答えを得た。
@FXML
private AnchorPane acnCalc;
@FXML
private ToggleGroup grpClarity;
@FXML
private ToggleButton tglIf, tglVvs1, tglvvs2, tglVs1, tglVs2, tglSi1, tglSi2, tglSi22, tglSi3, tglSi32, tglI1,
tglI12, tglI2, tglI22, tglI3, tglI4, tglI5, tglI6, tglI7, tglI8;
シーンビルダを使用して、トグルグループをすべてのトグルボタンに設定しました。
public void initialize(URL location, ResourceBundle resources) {
HashMap<String, ToggleButton> lstCalc = new HashMap<>();
for (Toggle t : grpClarity.getToggles()) {
ToggleButton chk = (ToggleButton) t;
lstCalc.put(chk.getText(), chk);
}
acnCalc.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent ke) {
if (ke.getCode().equals(KeyCode.I)) {
if (lstCalc.get("If").isFocused()) {
lstCalc.get("I1").requestFocus();
} else if (lstCalc.get("I1").isFocused()) {
lstCalc.get("I1-").requestFocus();
} else if (lstCalc.get("I1-").isFocused()) {
lstCalc.get("I2").requestFocus();
} else if (lstCalc.get("I2").isFocused()) {
lstCalc.get("I2-").requestFocus();
} else if (lstCalc.get("I2-").isFocused()) {
lstCalc.get("I3").requestFocus();
} else if (lstCalc.get("I3").isFocused()) {
lstCalc.get("I4").requestFocus();
} else if (lstCalc.get("I4").isFocused()) {
lstCalc.get("I5").requestFocus();
} else if (lstCalc.get("I5").isFocused()) {
lstCalc.get("I6").requestFocus();
} else if (lstCalc.get("I6").isFocused()) {
lstCalc.get("I7").requestFocus();
} else if (lstCalc.get("I7").isFocused()) {
lstCalc.get("I8").requestFocus();
}
else {
lstCalc.get("If").requestFocus();
}
}
if (ke.getCode().equals(KeyCode.S)) {
if (lstCalc.get("SI1").isFocused()) {
lstCalc.get("SI2").requestFocus();
} else if (lstCalc.get("SI2").isFocused()) {
lstCalc.get("SI2-").requestFocus();
} else if (lstCalc.get("SI2-").isFocused()) {
lstCalc.get("SI3").requestFocus();
} else if (lstCalc.get("SI3").isFocused()) {
lstCalc.get("SI3-").requestFocus();
}
else {
lstCalc.get("SI1").requestFocus();
}
}
if (ke.getCode().equals(KeyCode.V)) {
if (lstCalc.get("VVS1").isFocused()) {
lstCalc.get("VVS2").requestFocus();
} else if (lstCalc.get("VVS2").isFocused()) {
lstCalc.get("VS1").requestFocus();
} else if (lstCalc.get("VS1").isFocused()) {
lstCalc.get("VS2").requestFocus();
}
else {
lstCalc.get("VVS1").requestFocus();
}
}
}
}
}
+0
これはあまりにも作業が、ロジックの異なる種類れる.... – CTN
+1
どちらの答え作業しています..! –
関連する問題
- 1. 選択ノードID
- 2. SimpleXMLノードの選択
- 3. XPathの選択ノード
- 4. DOM4J選択子ノード
- 5. XMLノードの選択
- 6. TreeViewerでノードを選択
- 7. ノードJS複数選択
- 8. ツリービューのノードの再選択
- 9. XML文書のノード選択
- 10. tinymceマウスでhtmlノードを選択
- 11. 動的なツリービューからノードを選択
- 12. XSL:ノードを動的に選択
- 13. 選択したノード値を取得
- 14. HTMLAgilityPackコメント間のノードの選択
- 15. d3js v3:クリック時のノードの選択
- 16. JavaScriptでTreeViewの選択ノードを取得
- 17. 複数のノード選択のアクション
- 18. ノードJS: `http.get`と` https.get`の自動選択
- 19. C#XMLで選択ノードを生成
- 20. SmartGWTツリーグリッドでノードをプログラムで選択
- 21. SceneBuilderノードを選択できません
- 22. ノードの存在を選択するXSLT
- 23. C#HTMLAgility単一ノードxpathを選択
- 24. c#htmlagility pack条件付き選択ノード
- 25. 選択だけ繰り返しノード名
- 26. 選択ノードからPowershellへのフィルタリング
- 27. Tor Pythonステムの終了ノードを選択
- 28. jQuery経由でランダムpノードを選択
- 29. 動的選択で子ノードを削除
- 30. HtmlAgilityPackとノードとサブノードの選択
答えをありがとう... それは私のために働いています... – CTN