我正在尝试制作一个地图,将狗的名字映射到狗对象,然后打印出可用狗的列表,并应显示一个下拉菜单,要求用户从上述狗中选择一只。
这是我一直在使用的代码。窗口中存在下拉菜单,但当您按箭头时,没有任何值存在。我在代码中找不到任何明显的错误,任何澄清都会很棒。
List<Dog> potentialMatches = allDogs.findMatch(dogCriteria);
if (!potentialMatches.isEmpty()) {
Map<String, Dog> options = new HashMap<>();
StringBuilder infoToShow = new StringBuilder("Matches Found! The following dogs meet your criteria: \n");
for(Dog potentialMatch : potentialMatches){
infoToShow.append(potentialMatch.getName()).append(" (").append(potentialMatch.getMCNo()).append(") ").append("\n"); //shows the dogs name and microchipnumber next to it(example: Greg (12345678))
}
String adopt = (String) JOptionPane.showInputDialog(null, infoToShow +
"\n\nPlease select which of (if any) dog you'd like to adopt: ", appName, JOptionPane.QUESTION_MESSAGE,
icon, options.keySet().toArray(), ""); //drop down list in this JOptionPane shows no values, its an issue to do with options.keySet().toArray() but im not sure what.
if(adopt == null) {
System.exit(0); }
感谢您的帮助。
如果您看到,在代码中您已提供
null
作为 showInputDialog
方法的第一个参数。该函数将对话框选项作为该对象的父级,在本例中,您已提供 null
作为父级对象,Swing 将找不到它并且根本不会渲染它。您可能想要给它一个显示框,您想在其中查看您的选项,在本例中是一个对话框下拉框。