描述
我有两个RadioButtons
,他们都在名为ToggleGroup
的{{1}}上,我使用fileSearchGroup
制作,下面是图片:
问题
因此,如上所示添加了两个SceneBuilder 8
。如果我更改了它们,那么一个名为RadioButtons
的名字会关闭而另一个名为File Absolute Path...
的名字会出现,哪一个会成为第一名,哪一名将成为名为File Name...
的第二名ToggleGroup
为什么我想知道?
因为在应用程序中我有这个代码(下面是一些伪代码):
fileSearchGroup
最后
是否有上述解决方案,或者我必须将//Get the index of the selected toggle
if(group.getSelectedToggleIndex() == 0)
//Search using absolute path
else
//Search using file name
添加到我不想做的ID
,导致我保存数据库设置时添加的代码复杂性
RadioButtons
我正在使用ID
数据库保存设置,因此KeyValue
例如为Key
,其值为SearchFilesUsing
或0
,基于1
内选定的RadioButton
索引,如果我添加ToggleGroup
则会使工作变得困难,如果我想在将来更改ID
,我将不得不再次更改代码到处都是。
答案 0 :(得分:1)
您需要在文件中的内容(基本上是字符串或其他某种数据类型的字符串表示)与单选按钮之间进行一些映射。没有理由相信 "intent": "ShootIntent"
"slots": [
{
"name": "Column",
"type": "LIST_OF_COLUMNS"
},
{
"name": "Row",
"type": "AMAZON.NUMBER"
}
],
比其他任何事情更重要。
您可以使用一些字符串常量并将它们存储在控制器的地图中:
LIST_OF_COLUMNS
现在您可以使用
写入文件a Adams Alpha b Beta Boston Bravo c Charlie Chi Chicago d Delta Denver e Easy Echo Epsilon f Foxtrot Frank g Gamma George Golf h Henry Hotel i Ida India Iota j John Juliet k Kappa Kilo King l Lambda Lima Lincoln...
你可以用
回读int
作为一个轻微的变体你可以创建一个枚举而不是使用字符串。这里的优点是您可以在枚举中实际编写搜索策略。
private final Map<RadioButton, String> radioButtonKeys = new HashMap<>();
private static final String ABSOLUTE_PATH_SEARCH = "ABSOLUTE_PATH";
private static final String FILE_NAME_SEARCH = "FILE_NAME";
@FXML
private RadioButton absolutePathRadioButton ;
@FXML
private RadioButton fileNameSearchRadioButton ;
@FXML
private ToggleGroup group ;
public void initialize() {
radioButtonKeys.put(absolutePathRadioButton, ABSOLUTE_PATH_SEARCH);
radioButtonKeys.put(fileNameSearchRadioButton, FILE_NAME_SEARCH);
}
(抽象方法可以有你需要的任何签名。)
然后像以前一样创建地图,但是使用枚举值:
String searchType = radioButtonKeys.get(group.getSelectedToggle());
// write searchType as the value for Search_Files_Using
,文件读/写是
String searchType = /* value from file for Search_Files_Using */
for (RadioButton radioButton : radioButtonKeys.keySet()) {
radioButton.setSelected(radioButtonKeys.get(radioButton).equals(searchType)) ;
}
和
public enum SearchType {
ABSOLUTE_PATH {
public void search() {
// search implementation here...
}
},
FILE_NAME {
public void search() {
// search implementation here...
}
};
public abstract void search() ;
}
实际执行搜索时,枚举的优势在于:
private final Map<RadioButton, SearchType> radioButtonKeys = new HashMap<>();
public void initialize() {
radioButtonKeys.put(absolutePathRadioButton, SearchType.ABSOLUTE_PATH);
radioButtonKeys.put(fileNameSearchRadioButton, SearchType.FILE_NAME);
}
只是一些想法。切换组中切换按钮的顺序是切换组的实现,可能取决于非常随意的内容,例如在FXML文件中定义它们的顺序。 imho。
依赖于那个并不强大