Проще говоря, вы можете использовать перечисление:
import java.util.Arrays;
public enum ComboSQL {
SORT_CITY_POPULATION_ASC(
"Sort cities by population / ascending",
"SELECT cityname FROM City ORDER BY population ASC"),
SORT_CITY_POPULATION_DESC(
"Sort cities by population / descending",
"SELECT cityname FROM City ORDER BY population DESC"),
SORT_CITY_NAME ("Sort cities by name", "SELECT cityname FROM City ORDER BY cityname"),
GET_TOTAL_POPULATION ("Get total population", "SELECT SUM(population) FROM City"),
GET_AVERAGE_POPULATION("Get AVG population", "SELECT AVG(population) FROM City"),
GET_HIGHEST_POPULATION("Get Highest population", "SELECT MAX(population) FROM City"),
GET_LOWEST_POPULATION ("Get Lowest population", "SELECT MIN(population) FROM City");
private String label;
private String sql;
private ComboSQL(String label, String sql) {
this.label = label;
this.sql = sql;
}
public String getLabel() {
return this.label;
}
public String getSQL() {
return this.sql;
}
public static ComboSQL getByLabel(String label) {
return Arrays.stream(ComboSQL.values())
.filter(e -> e.getLabel().equals(label))
.findFirst().orElse(null);
}
}
Затем вы сможете заполнить комбо с помощью меток и затем отобразить выбранный элемент комбо на перечисление
querydrop.getItems().addAll(
Arrays.stream(ComboSQL.values())
.map(ComboSQL::getLabel)
.collect(Collectors.toList())
);
// ...
querydrop.setOnAction(event ->
{
queryTextArea.setText(ComboSQL.getByLabel(querydrop.getValue()).getSQL());
});
Также можно найти SQL по индексу:
querydrop.setOnAction(event ->
{
int selectedIndex = querydrop.getSelectionModel().getSelectedIndex();
if (selectedIndex > -1) {
ComboSQL combo = ComboSQL.values()[selectedIndex];
queryTextArea.setText(combo.getSQL());
}
});