Наилучшим подходом будет реализация шаблона проектирования Command
.
Однако, если дело в том, что triangleRoutines
необходимо вернуться к предыдущему меню, то, учитывая общий текущий подход, я думаю, что изменение в том, где представлено меню, будет работать.Я не уверен, что это вопрос ОП, но я верю в это.
См. Комментарии в коде примера для получения дополнительной информации.
Не проверено, но что-то вроде:
private static void triangleRoutines() {
...
// if the program is done, can return null
// if cancel, then return anything but null
return "";
}
Тогда
do {
// get the menu from the top level
String menu = (String) JOptionPane.showInputDialog(null,"choose","Main menu",JOptionPane.QUESTION_MESSAGE,null,choices,choices[0])
switch (menu){
case "1. Routines for Triangles":
// if cancel, then will return empty string, and then
// re-present the main menu
triangleRoutines(); //one sub menu
break;
...
case "6. Quit":
menu = null;
break;
} //switch
} while (menu != null);
Таким образом, в triangleRoutines()
можно «отменить», и он вернет пустой String
, который не равен нулю, поэтому он представит меню верхнего уровняснова.Если кто-то хочет выйти из подменю triangleRoutines()
, верните ноль, и программа закроется.
Опять же, я мог неправильно понять конкретный вопрос.